【问题标题】:Codingbat Array2 zeroMaxCodingbat Array2 zeroMax
【发布时间】:2020-02-10 20:54:58
【问题描述】:

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

public int[] zeroMax(int[] nums) {

  int max = 0;
  int temp = 0;

  for(int i = 0; i < nums.length-1; i++){
    if(nums[i] == 0){
      for(int j = i+1; j < nums.length; j++){
        if(nums[j] % 2 != 0) max = Math.max(HERE, nums[j]); 
      }nums[i] = max; 
      max = 0;
    }
  }
  return nums;
}

这是我的问题代码,这里是我不太明白的地方。我必须把 max 放在那里,但在我看来,我也有可能把 0 放在那里。因为循环无论如何都会将 max 重置为 0,对吧?但是当我把 0 放在那里时,代码在某些情况下不起作用。 我错过了什么?

【问题讨论】:

    标签: java arrays for-loop max


    【解决方案1】:
    max = Math.max( max, nums[j] );
    

    此代码将取两者中较大的一个:maxnums[j]

    max = Math.max( 0, nums[j] );
    

    此代码将采用任何正数nums[j](因为它大于 0)。 请记住,这是一个循环。 max 将不断更新以保持最大数量。它只会在循环完成后重置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 2015-03-01
      • 2014-03-14
      • 1970-01-01
      相关资源
      最近更新 更多