我的Java代码如下。
boolean almostIncreasingSequence(int[] sequence) {
Integer[] arr = new Integer[sequence.length];
for(int ctr = 0; ctr < sequence.length; ctr++) {
arr[ctr] = Integer.valueOf(sequence[ctr]); // returns Integer value
}
System.out.println("Integer :: " + arr);
List<Integer> al = new ArrayList<Integer>();
// adding elements of array to arrayList.
Collections.addAll(al, arr);
System.out.println("list :: " + al);
int save, flag = 0;
for(int i=0; i<al.size(); i++) {
save = al.get(i);
al.remove(i);
if(al.size()==1) return true;
for(int j=0; j<al.size()-1; j++) {
if(al.get(j+1) > al.get(j)) {
flag = 0;
continue;
}
else {
flag = 1;
break;
}
}
if(flag == 0) {
return true;
}
al.add(i,save);
}
if(flag == 1)
return false;
return true;
}
该代码用于解决问题“给定整数序列作为数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。”
对于某些测试用例,它显示执行此操作需要 3 秒以上。但是,我不确定在哪里可以进行更改以更快地执行它。我无权访问测试用例。
在这里,我创建了 2 个 for 循环,因为在第一个循环中,我正在生成将删除每个索引的列表,在第二个循环中,我正在迭代已删除元素的新列表。
像示例数组是 {1,2,4,3} 然后在第一个循环中我创建一个数组,它将是 {2,4,3},{1,4,3},{1,2,3}和{1,2,4}。在第二个循环中,我遍历所有这 4 个数组以比较每个元素。
元芳怎么了
凤凰求蛊
哔哔one
相关分类