java Codingbat notAlone – 为什么它不能用于这个特定的例子
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java Codingbat notAlone – 为什么它不能用于这个特定的例子,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1790字,纯文字阅读大概需要3分钟。
内容图文
![java Codingbat notAlone – 为什么它不能用于这个特定的例子](/upload/InfoBanner/zyjiaocheng/790/e3c8168da91d4fc681a9b9de3f18799d.jpg)
We’ll say that an element in an array is “alone” if there are values before and after it, and those values are different from it. Return a version of the given array where every instance of the given value which is alone is replaced by whichever value to its left or right is larger.
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] ].
我真的被困在如何解决这个问题上,因为在我看来,我所写的内容也适用于这个特定的例子,但显然它没有.我的错误来自哪里?我该如何重新编写代码?真的很感激任何帮助!
解决方法:
你复杂化了.如果要替换当前元素,您只需要找到上一个和下一个元素的最大值:
public static int[] notAlone(int[] nums, int val) {
for(int k = 1 ; k<nums.length - 1; k++)
{
if(nums[k]==val && nums[k-1] != nums[k] && nums[k] != nums[k+1])
nums[k] = Math.max (nums[k-1], nums[k+1]);
}
return nums;
}
顺便说一下,在你的解决方案中你忽略了给定的值(val):
Return a version of the given array where every instance of the given value which is alone is replaced…
但这并不是你的代码在给定情况下失败的原因.您根本找不到正确的最大值:
当k == 3时:
int max = nums[k]; // max = 2
if(nums[k-1]>nums[k]) // 3 > 2
max = nums[k-1]; // max = 3
else if(nums[k+1] > nums[k]) // no evaluated. therefore you change num[3] to 3 instead of to 5
max = nums[k+1];
如果用以下代码替换这5行:
int max = nums[k-1];
if(nums[k+1] > max)
max = nums[k+1];
你会得到正确的输出.
内容总结
以上是互联网集市为您收集整理的java Codingbat notAlone – 为什么它不能用于这个特定的例子全部内容,希望文章能够帮你解决java Codingbat notAlone – 为什么它不能用于这个特定的例子所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。