leetcode做题笔记53

这篇具有很好参考价值的文章主要介绍了leetcode做题笔记53。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组 是数组中的一个连续部分。

思路一:前缀和

int maxSubArray(int* nums, int numsSize){
    int sum=0,ans=0,temp=nums[0],flag=1;
    for(int i=1;i<numsSize;i++){
        if(temp<0&&nums[i]<0&&temp<nums[i]){
            temp=nums[i];
        }
        if(nums[i]>=0){
            flag=0;
            break;
        }   
    }
    if(flag==1)
        return temp;
    for(int i=0;i<numsSize;i++){
        if(sum+nums[i]<0){
            sum=0;
        }
        else{
            sum=sum+nums[i];
            if(ans<sum)
                ans=sum;
        }
    }
    return ans;
}

时间复杂度O(n),空间复杂度O(1)

分析:

本题要求最大子数组和,可考虑先求出每个元素的前缀和,再判断是否前缀和加现元素是否大于原返回值,从而得到答案。编写的过程中需考虑数组中全为负数的情况,此处先遍历完整个数组判断是否整个数组均为负数后计算前缀和,最后返回ans

总结:

本题考察对数组的应用,前缀和的方法,利用前缀和的知识便可解决此问题。文章来源地址https://www.toymoban.com/news/detail-625322.html

到了这里,关于leetcode做题笔记53的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LeetCode】53. 最大子数组和

    这道题的状态设计和状态转移和 300. 最长递增子序列 类似。但是这里要求的是 连续子数组 ,和子序列不同。 状态定义 首先定义 dp[i] :以 nums[i] 结尾的具有最大和的连续子数组。 状态转移方程 根据状态的定义,dp[i] 一定包含 nums[i] 。 这里我们假设 nums[i] 0 ,则一定有 dp[

    2024年02月02日
    浏览(24)
  • LeetCode[53]最大子数组和

    Description: 给你一个整数数组  nums  ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组  是数组中的一个连续部分。 解法1:遍历--超时,内存超限,不通过,算法复杂度O(n^3)了吧 解法2:动态规划 这里有个关键状态转移方程的定义

    2024年01月25日
    浏览(23)
  • 【LeetCode力扣】189 53 轮转数组 | 最大子数组和

    目录 1、189. 轮转数组 1.1、题目介绍 1.2、解题思路 2、53. 最大子数组和 2.1、题目介绍 2.2、解题思路   原题链接: 189. 轮转数组 - 力扣(LeetCode) ​ 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转

    2024年02月08日
    浏览(26)
  • 动态规划——最大子数组和(Leetcode 53)

    解题代码: ===== int maxSubArray(int* nums, int numsSize){ int pre = 0, maxAns = nums[0]; 自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。 深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训

    2024年04月26日
    浏览(26)
  • LeetCode:53. 最大子数组和 - Python

    53. 最大子数组和 问题描述: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 提示

    2024年02月11日
    浏览(22)
  • 【LeetCode每日一题】53. 最大子数组和

    https://leetcode.cn/problems/maximum-subarray/description/ 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 先算出数组的前缀和,然后通过2个for循环遍历出所有的连续子数组。 寻找一个具有

    2024年02月04日
    浏览(40)
  • leetcode每日一练-第53题-最大子数组和

    一、思路 动态规划 二、解题方法 使用了两个变量 maxSum 和 currentSum 来分别记录全局的最大和和当前连续子数组的和。遍历数组时,我们不断更新 currentSum ,并比较是否需要更新 maxSum 。最后, maxSum 就是最大的连续子数组和。 三、code ===================================================

    2024年02月10日
    浏览(22)
  • leetcode做题笔记59

    给你一个正整数  n  ,生成一个包含  1  到  n2  所有元素,且元素按顺时针顺序螺旋排列的  n x n  正方形矩阵  matrix  。 时间复杂度O(n),空间复杂度O(n^2) 本题要按顺时针顺序排列数组后输出,可设置对应的方向数组,将递增的数通过方向数组放置到正确的位置,最后输

    2024年02月14日
    浏览(25)
  • leetcode做题笔记41

    给你一个未排序的整数数组  nums  ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为  O(n)  并且只使用常数级别额外空间的解决方案。 目录 思路一:利用负数进行区分 分析: 思路二:交换法 分析: 总结: 时间复杂度O(n),空间复杂度O(1) 本题一开始想到

    2024年02月16日
    浏览(23)
  • leetcode做题笔记71

    给你一个字符串  path  ,表示指向某一文件或目录的 Unix 风格  绝对路径  (以  \\\'/\\\'  开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点( . )表示当前目录本身;此外,两个点 ( .. ) 表示将目录切换到上一级(指向父目录);两者都可以

    2024年02月13日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包