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日
    浏览(39)
  • LeetCode[53]最大子数组和

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

    2024年01月25日
    浏览(63)
  • 【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日
    浏览(37)
  • 动态规划——最大子数组和(Leetcode 53)

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

    2024年04月26日
    浏览(38)
  • 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日
    浏览(35)
  • 【LeetCode每日一题】53. 最大子数组和

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

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

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

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

    给你一个字符串  s ,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中  最后一个  单词的长度。 单词  是指仅由字母组成、不包含任何空格字符的最大子字符串。 本题要求最后一个单词长度,只需从后向前遍历,ans不断增加,一旦遇到空格则输出ans的值 本

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

    给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: 0 = j = nums[i]  i + j n 返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。

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

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

    2024年02月16日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包