java - 几乎递增的序列java
问题描述
我正在尝试编写代码来确定是否可以通过仅从该数组中删除一个元素来获得一个严格递增的整数数组。
我的代码适用于 17 种情况中的 16 种,但我想不出一种方法来巧妙地重写我的代码,以便它考虑到数字大于它之前的数字以及小于它之后的数字的情况我已经写了这个 for 循环。这是我的代码。这不适用于数组:[1, 2, 3, 4, 3, 6],因为它不会像我的 for 循环当前构造的方式那样将数组中的最后 3 个视为违规者.
boolean almostIncreasingSequence(int[] sequence) {
int offenderPosition = 0;
int[] arrCopy = Arrays.copyOf(sequence, sequence.length);
boolean ordered = true;
//trying to neatly rewrite this for loop
for(int i= 0; i < sequence.length; i++){
if(i<sequence.length-1){
for(int j = i+1; j < sequence.length; j++) {
if(!(sequence[i] < sequence[j])){
ordered = false;
offenderPosition = i;
}
}
}
if(i == sequence.length-1){
if(!(sequence[i] > sequence[i-1])){
ordered = false;
offenderPosition = i;
}
}
}
if(ordered == false) {
//remove offender
int currentSize = arrCopy.length;
for(int i = offenderPosition+1;i< currentSize; i++) {
arrCopy[i-1] = arrCopy[i];
}
currentSize--;
//reassign array
arrCopy = Arrays.copyOf(arrCopy, currentSize);
boolean lastChance = true;
for(int i = 0; i < currentSize-1; i++){
for(int j = i+1; j < currentSize; j++) {
if(!(arrCopy[i] < arrCopy[j])){
lastChance = false;
}
}
}
return lastChance;
}
else{
return true;
}
}
解决方案
我认为这可能有效:
boolean almostIncreasingSequence(int[] a) {
int count1 = 0 , count2 = 0;
for(int i = 0 ; i < a.length-1 ; i++){
if(a[i] >= a[i+1]) count1++;
}
for(int i = 0 ; i < a.length-2 ; i++){
if(a[i] >= a[i+2]) count2++;
}
return (count1 <=1) && (count2 <= 1);
}
第一个循环只检查彼此接近的数字。如果第一个索引大于第二个索引,我们将在 count1 中加 1。将 1 添加到 count1 时,表示第一个索引大于第二个索引,该方法应返回 false;第二个 for 循环也将检查 ex。如果第一个索引大于第三个索引。1, 2 ,1,2 例如,它会将 1 添加到 count2 执行每个循环后,该方法将返回 if 语句返回的布尔值。
推荐阅读
- java - 在保留空格的字符串中反转每个单词中的字符
- sql-server - SQL Server 使用 group by 计算列
- objective-c - ARC 不允许将“int”隐式转换为“NSString * _Nullable”。不兼容的整数到指针的转换
- wpf - ComboBox 作为 inkcanvas 中的子项
- microsoft-graph-api - 如何在 Office 365 上获取就地存档自定义文件夹名称?
- javascript - 在 office.js excel 加载项中为单个列设置列宽
- javascript - 如何预填充 mapbox 方向 api 的起点和终点?
- list - 方案:迭代器函数一次只返回一个值
- visual-studio-2017 - 无法预览 SSRS 报告 - 嵌入式连接
- selenium - 找不到为 DesiredCapabilities 类创建的对象