问题描述:zeroMax问题
Return a version of the given array where each zero value in the array is replaced by the largest odd value to the right of the zero in the array. If there is no odd value to the right of the zero, leave the zero as a zero. zeroMax([0, 5, 0, 3]) → [5, 5, 3, 3] zeroMax([0, 4, 0, 3]) → [3, 4, 3, 3] zeroMax([0, 1, 0]) → [1, 1, 0] |
Java代码:
public int[] zeroMax(int[] nums) {
int N = nums.length;
if(N==0) return nums;
boolean flag=false; //flag=true代表当前有odd值
int odd = 0;
for(int i=N-1;i>=0;i--) {
if(nums[i]==0&&flag==true) nums[i] = odd;
else if(nums[i]%2!=0) {
if(flag==true) {
odd = (nums[i]>odd)? nums[i]:odd;
}
else {
odd = nums[i];
flag = true;
}
}
}
return nums;
}
思路:倒序依次判断每一个元素: