题解 | #小猪摘水果# 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
作为结果,表示两棵树上的水果总数的最大值。