题目:
解题思路:
返回最大的连续子数组的和,在这里,我们需要两个变量,一个是返回的最大子序和max,一个是当前最大的子序和sum。我们将sum赋予初值,即数组nums[0],从这开始sum就有两种情况了,
一、sum>=0,对我们所求的结果有增益,那么sum保留且加上循环当前遍历到的数字
二、sum<0,对我们的结果无增益,那么sum舍去,重新赋予sum值为当前循环遍历到的数字
我看到一个很有趣的回答,就是将这个题目想象为我们赌钱,如果今天我赌输了,那好,我忘记了今天,我明天还来赌;如果我今天赌赢了,那我就看我能连续赢几天,最后想一下,哪几天赢得钱最多。
代码如下:
for(int num:nums)
int :表示你要遍历的集合的类型
nums:表示你要遍历的集合的名
num:表示你每遍历集合中一个元素 便存储到该变量中。
这是一个foreach循环遍历,就是把nums这个数组进行遍历,有多少个数就遍历多少遍,每次遍历都把遍历到的值赋给num。
java.lang.Math.max(参数1,参数2)是一个静态的工具方法,主要用来比较两个相同类型参数的大小,支持的类型有double,float,int,long四种类型。参数1与参数2比较,返回最大值。
参考:https://leetcode-cn.com/problems/maximum-subarray/