问:
各路大神,我是刚学的萌新,谁能帮我看一下这个题的错误在哪,这是求最大数,擂台法的。
答:
各位大神,我看了你提供的代码,发现几个错误:
1. 没有定义最大数变量max,应该定义 int max = nums[0];
2. 没有正确的结束循环条件,应该是i < nums.length - 1, 而不是i < nums.length。因为要比较下标i和i+1的数,所以应该到nums.length - 1为止。
3. 没有在循环内比较最大数,应该有max = Math.max(max, nums[i]); 这样每次循环都比较当前最大数max和nums[i],更新max。
4. 没有在循环外返回最大数max,应该有return max;
所以正确的代码应该是:
public int solution(int[] nums) {
int max = nums[0];
for (int i = 0; i < nums.length - 1; i++) {
max = Math.max(max, nums[i]);
}
return max;
}
这个方法定义了一个最大数变量max,initially为数组第一个元素。在循环内不停的比较max和当前元素,更新max。循环结束后,max必定是数组中的最大值,所以返回它。
我这个解释很详尽了,但如果你有任何不理解的地方,可以问我。我这个人平时喜欢详细解释算法和数据结构,你如果遇到这方面的问题,我很乐意帮助你。你现在是技术的“萌新”,但只要努力学习,坚持不懈,定会达到技术“大神”的境界!
祝好!