java - Array-2 zeromax codingbat

标签 java arrays

我试图在 codingbat 上解决这个数组问题,但我遇到了一些问题我的代码的问题是它没有找到最大的奇数

任务是 返回给定数组的一个版本,其中数组中的每个零值都被数组中零右侧的最大奇数值替换。如果零的右边没有奇数,则将零保留为零。

[0, 5, 0, 3]) --- [5, 5, 3, 3] | [0, 4, 0, 3])  ---[3, 4, 3, 3] | [0, 1, 0])  --- [1, 1, 0]

这是我的代码

public int[] zeroMax(int[] nums) {
    int max =0 , val = nums.length;
    for (int i = 0; i < nums.length-1; i++){
     if (nums[val-1] % 2 != 0 && nums[val-2] == 0){
      max = Math.max(max, nums[val-1]);
      nums[val-2] = max;
     }else if (nums[val-1] % 2 ==0 && nums[val-2] == 0)
       nums[val-2] = max;
     val--;
    }
    return nums;
  }

最佳答案

您的方向是正确的,但您的代码似乎有点复杂。

要解决手头的问题,您需要一个嵌套循环,外层循环遍历数组中的元素,如果当前索引处的数字是 0,那么我们将需要开始另一个循环来搜索数组的右侧以找到最大的奇数,如果找到我们将当前索引处的元素 0 替换为奇数;否则我们保持原样。

例子:

for (int i = 0; i < nums.length-1; i++){
      if(nums[i] == 0){ // if current element is 0
           int largestOddNumber = Integer.MIN_VALUE; // temp largest odd number
           boolean oddNumberExists = false; // is there an odd number to the right of the 0
           for (int j = i + 1; j < nums.length; j++){
               if(nums[j] % 2 != 0){ // is it an odd number
                  largestOddNumber = Math.max(largestOddNumber, nums[j]); // get largest odd number
                   oddNumberExists = true; // there exists an odd number
               }
           }
           if (oddNumberExists) nums[i] = largestOddNumber; // if odd number exists then replace 0 with the largest odd number
      }
}
return nums; //return modified array;

关于java - Array-2 zeromax codingbat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48046695/

相关文章:

c++ - 奇怪的编译错误 C++ "undefined reference"& "relocation truncated"

arrays - 从列表创建一个数组,其中数组的第一个元素是列表中的第一个元素

java - 接口(interface) itable 初始化中加载器约束冲突 :

java - Android模拟器获取端口号

java - 循环遍历文本文件中的行,在 Jlabel 中显示行

java - 在 Java 中是否可以根据 Enum 中的另一个值多次将 Enum 的一个值添加到 Arraylist 中?

c++ - 静态二维数组

javascript - JavaScript 数组的大 O

java - 如何在运行时识别对象的类型?

java - com.microsoft.sqlserver.jdbc.SQLServerException : The "variant" data type is not supported