题解 | #小猪摘水果# java
小猪摘水果
https://www.nowcoder.com/practice/fdb76b9170dc4e689a7eceee97159d96
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param fruit int整型一维数组
* @return int整型
*/
public int mostFruitTree (int[] fruit) {
// write code here
fruit[0] = 10 + fruit[0];
int fruitLen = fruit.length;
for (int i = 1; i < fruitLen; i++) {
fruit[i] += fruit[i - 1];
}
int max = 10;
for (int j = 0; j < fruitLen; j++) {
if (fruit[j] > max)
max = fruit[j];
}
return max;
}
}
该代码使用的编程语言是Java
该题考察的知识点是动态规划和数组操作。给定一个整型数组 fruit,表示水果树上每棵树上的水果数量。现在要选择两棵树,使得这两棵树上的水果总数最多。其中,第一棵树上的水果数量为 10,可以认为是固定值。需要返回两棵树上的水果总数的最大值。
代码中的解决思路是先从索引位置 1 开始,将每个索引位置上的元素值加上前一个索引位置上的元素值,即 fruit[i] += fruit[i - 1]。这样,数组 fruit 中存储的便是从开头到当前位置的水果总数。然后通过遍历数组找到水果总数的最大值,并返回该最大值作为结果。
代码的文字解释如下:
- 定义一个函数
mostFruitTree,接收一个整型数组fruit和数组长度fruitLen作为参数。 - 将数组第一个元素的值加上 10,即
fruit[0] = 10 + fruit[0]。 - 使用循环遍历数组,从索引位置 1 开始,将每个索引位置上的元素值加上前一个索引位置上的元素值,即
fruit[i] += fruit[i - 1]。 - 初始化一个变量
max并赋值为 10,用于存储最大的水果总数。 - 再次使用循环遍历数组,依次检查每个索引位置上的元素值。如果当前元素值大于 max,则更新 max 的值为当前元素值。
- 返回变量
max作为结果,表示两棵树上的水果总数的最大值。
