算法打卡第一题(动态:求最大子序和)

题目:在这里插入图片描述

解题思路:
返回最大的连续子数组的和,在这里,我们需要两个变量,一个是返回的最大子序和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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值