Мы скажем, что элемент в массиве «один», если есть значения до и после него, и эти значения отличаются от него.Вернуть версию данного массива, в которой каждый экземпляр данного значения, который является единственным, заменяется тем, какое значение слева или справа больше.
notAlone ([1, 2, 3], 2) → [1, 3, 3]
notAlone ([1, 2, 3, 2, 5, 2], 2) → [1, 3, 3, 5, 5, 2]
notAlone ([3, 4], 3) → [3, 4]
public int[] notAlone(int[] nums, int val) {
for(int k = 1 ; k<nums.length; k++)
{
if(k!= nums.length-1)
{
int max = nums[k];
if(nums[k-1]>nums[k])
max = nums[k-1];
else if(nums[k+1] > nums[k])
max = nums[k+1];
if(nums[k-1] != nums[k] && nums[k] != nums[k+1])
nums[k] = max;
}
}
return nums;
}
Когда я запускал это на codingbat, это работало для всех примеров, кроме этого: notAlone ([1, 2, 3, 2, 5, 2], 2) должен вернуть [1, 3, 3, 5, 5, 2], но вместо него вернулось [1, 3, 3, 3, 5, 2].
Я действительно застрял в том, как решить эту проблему, потому что, на мой взгляд, то, что я написал, должно работать и для этого конкретного примера, но, очевидно, это не так.Откуда моя ошибка?Как мне переписать мой код?Любая помощь будет принята с благодарностью!