如何解决我怎样才能用贪心得到Om + n?
在这种情况下,如何设计算法贪婪O(m+n)
给出两个安排L1
和L2
,其中| L1 | = n
和| L2 | = m
。
L2
中删除元素以获得L1
,则 L1
是L2
的子序列。这意味着存在m
个索引ik∈ [0..n]
,因此每个L1 [ik] = L2 [j]
都有j∈ [0..m]
。在O (n + m)
中设计一个贪婪算法,以检测L2
是否是L1
的子序列,并在{{1}的情况下输出ik
中的L1
索引}是L2
的子序列。
示例:
L1
我一直在用这个做经典的代码
Input L1 = [1 2 3 4 5 6 7 8 9 10] L2 = [3 5 7 9] Output ik = [2 4 6 8]
Input L1 = [2 1 4 3 6 5 7 8 9 10] L2 = [1 6 5 10] Output ik = [1 4 5 9]
Input L1 = [1 2 3 4 5 6 7 8 9 10] L2 = [1 5 9 12] Output L2 is not subsequence of L1
但是我不知道如何使用贪婪来获取bool isSubsequence(string str1,string str2) {
int i=0;
int j=0;
while (j<str1.length() && i<str2.length()){
if(str1[j]==str2[i]){
cout<<i<<" ";
j++;
}
i++;
}
return j==str1.length();
}
。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。