Я пытаюсь написать код, который определяет, возможно ли получить массив строго увеличивающихся целых чисел, удаляя только один элемент из этого массива.
Мой код работает для 16 из 17 случаев, но я не могу придумать, как аккуратно переписать мой код, чтобы он учитывал случай, когда число больше, чем предыдущее, а также меньше, чемтот, что после того, как я написал это для цикла.Вот мой код.Случай, для которого это не работает, - это массив: [1, 2, 3, 4, 3, 6], поскольку он не рассматривает последние 3 в массиве как нарушителя, как в настоящее время создается цикл for для my.
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;
}
}