【发布时间】:2019-02-18 07:14:29
【问题描述】:
我被要求写,从数组中删除元素(lets say k=30),并在不使用内置方法的情况下将其他元素向左移动。
我尝试了以下方法。
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[] { 1, 2, 30, 4, 5, 30, 6 };
int k = 30;
int count = 0;
System.out.println("---Original Array------");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] == k)
count++;
}
for (int j = 0; j < count; j++) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == k) {
for (int l = i; l < arr.length - 1; l++) {
arr[l] = arr[l + 1];
}
}
}
}
System.out.println("---Modified Array------");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
我需要这样的输出:[1 2 4 5 6 0 0]
但上述逻辑的输出是:[1 2 4 5 6 6 6]
另外,我担心在这里使用嵌套的 for 循环。有什么方法可以在不使用任何内置方法的情况下降低时间复杂度?
【问题讨论】:
-
A
break在某处丢失。 :)