我试图在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;
}
public int[] zeroMax(int[] nums) {
int lod = 0; //largest odd number
for (int i = nums.length - 1; i >= 0; i--)
{
if (nums[i] % 2 != 0 && nums[i] > lod)
lod = nums[i];
if (nums[i] == 0)
nums[i] = lod;
}
return nums;
}
public int[] zeroMax(int[] nums) {
int val = 0;
for (int i = 0; i < nums.length; i++){
if (nums[i] == 0){
for (int j = i; j < nums.length; j++){
if (nums[j] % 2 != 0 && nums[j] > val){
val = nums[j];
nums[i] = val;
}
}
val = 0;
}
}
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;
CodingBat中的给定任务sameEnds: 给定一个字符串,返回出现在字符串开头和结尾且不重叠的最长子字符串。例如,sameEnds(“abXab”)是“ab”。 我的解决方案通过了所有测试,除了一个^: 这里有什么问题?我怎样才能修复它?
给定CodingBat中的任务maxBlock: 给定一个字符串,返回字符串中最大“块”的长度。块是相同的相邻字符的运行。 我的解决方案通过了所有测试,除了一个:
我是新的编码,并有这个问题的问题,任何帮助都是感激的。 提示:将你的BMI计算四舍五入到小数点后一位。确保返回的消息与显示的完全相同。 我做错了什么!!这就是我得到的错误。 错误:公共字符串BMIResult(双重,双高){
我遇到了一个关于编码蝙蝠的问题,问题是: 给定一个字符串,返回一个由原始字符串的最后2个字符的3个副本组成的新字符串。字符串长度至少为2。我解决了这个问题,解决方案(下图)比我的好,但是,解决方案代码有一个问题,当字符串长度小于2时,假设长度只有1。str索引将是-1。代码还能工作吗?为什么网站说解决方案是正确的?
首先大家请看这段源码: -- http://www.kyne.com.au/~mark/software/lua-cjson.php -- version: 2.1 devel local json = require("cjson") ngx.say("value --> ", json.encode({dogs={}})) 输出结果 value --> {"dogs":{}} 注意看下 en
Codingbat的任务: 给定一个字符串,计算以“y”或“z”结尾的单词数——“heavy”中的“y”和“fez”中的“z”,而不是“yellow”中的“y”(不区分大小写)。如果单词后面没有字母,我们会说y或z位于单词的末尾。(注意:测试字符是否为字母。) 我正在尝试这样解决这个任务: 但并不是所有的测试都通过了。如何修复regex=([..^y^z]\b)”以通过所有测试?