62,614
社区成员
发帖
与我相关
我的任务
分享
int k =0;
for(int i = 0,j=B.length;i<j;i++){
//对A[B[i]]进行甲操作;
for(;k<B[i];k++){
//对A[k]进行乙操作;
}
k = B[i]+1;
}
for(;k<A.length;k++){
//对A[k]进行乙操作;
}
)
for(int i = 0,j=A.length;i<j;i++){
if(A[i]>0){
//对A[i]进行乙操作;
}
}
不进行判断就更好了。因为A有多长,就得判断多少次,我一直再想这个问题。[/quote]
这个不太好办啊,对A的remove操作可能会更慢
for(int i = 0,j=A.length;i<j;i++){
if(A[i]>0){
//对A[i]进行乙操作;
}
}
不进行判断就更好了。因为A有多长,就得判断多少次,我一直再想这个问题。
for(int i = 0,j=B.length;i<j;i++){
//对A[B[i]]进行甲操作;
for(;k<B[i];k++){
//对A[k]进行乙操作;
}
k = B[i]+1;
}
表明已对A中下标不大于B中最大元素的的所有元素进行了操作。接下来的
for(;k<A.length;k++){
//对A[k]进行乙操作;
}
是对A中下标大于B中最大元素的的所有元素进行操作,完成对A数组的全部遍历。
应该没有错的for (int i = 0; i < A.length; ++i) {
if (binarySearch(B, i) != -1) {
// 甲操作
} else {
// 乙操作
}
}
for (int i = 0; i < A.length; ++i) {
if (set.contains(i)) {
// 甲操作
} else {
// 乙操作
}
}
这个做法不对,因为B中的元素并不是A中的前k个
for(;k<A.length;k++){
//对A[k]进行乙操作;
}