有一个整数顺序表L,设计一个算法删除其中所有值为负整数的元素,删除后元素的相对次序不变,并给出算法的时间复杂度。
例:
L1=(1,2,-1,-2,3,-3),删除后L1=(1,2,3)
L2=(2,-1,-5,6,-7,4,-5,8),删除后L2=(2,6,4,8)
有一个整数顺序表L,设计一个算法删除其中所有值为负整数的元素,删除后元素的相对次序不变,并给出算法的时间复杂度。
例:
L1=(1,2,-1,-2,3,-3),删除后L1=(1,2,3)
L2=(2,-1,-5,6,-7,4,-5,8),删除后L2=(2,6,4,8)
package com.itheima.azhe;
import java.util.ArrayList;
public class shanchufushu {
public static void main(String[] args) {
//比如
ArrayList<Integer> arr = new ArrayList<>();
arr.add(1);
arr.add(2);
arr.add(-1);
arr.add(-2);
arr.add(3 );
arr.add(-3);
System.out.println("删除前:"+arr);
//创建一个del方法 删除负数
ArrayList newarr = del(arr);
System.out.println("删除后"+newarr);
}
private static ArrayList del(ArrayList<Integer> arr) {
//遍历集合 拿到每一个元素
for (int i = 0; i < arr.size(); i++) {
//做一个判断 判断是否为负数 是负数就删除
// arr[i]作为第几个索引 比如 0索引代表第一个元素 1
if (arr.get(i) < 0) {
//当代码走到这行 说明是负数 然后删除元素 使用remove方法 里面传入的
//是几号索引
arr.remove(i);
//需要修改的地方 每次删除一个元素 那么在循环里面自减
i--;
//自减就会重新回到上一个索引
}
}
return arr;
}
}
-------------------------------------------
运行结果
删除前:[1, 2, -1, -2, 3, -3]
删除后[1, 2, 3]