提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
提示:这里可以添加本文要记录的大概内容:
2月15日练习内容
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目-最大子数组和
1.题目描述
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例 2:
输入:nums = [1]
输出:1
示例 3:
输入:nums = [5,4,-1,7,8]
输出:23
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-subarray
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.思路与代码
2.1 思路
1.创建两个指针,指针curr为子数组和,max为最大子数组和
2.将数组的第一个值赋值为curr和max
3.for循环,将curr与数组后续值相加;先判断curr是否小于0,如果curr小于0,则将其赋值为0,并与后续数组值相加
4.判断curr与max的大小,并取最大值
5.输出最大值
2.2 代码
代码如下(示例):
class Solution {
public int maxSubArray(int[] nums) {
//创建两个指针
int curr = nums[0]; //临时最大值
int max = nums[0]; //最大值
//遍历数组
for(int i = 1;i < nums.length;i ++){
//如果curr为负数,则直接将curr变为0,
//curr与nums【i】相加
curr = Math.max(curr,0) + nums[i];
//最大值与curr比较
max = Math.max(curr,max);
}
return max;
}
}
总结
提示:这里对文章进行总结: