首页 > 其他分享 >最大子序和

最大子序和

时间:2023-02-24 21:56:12浏览次数:19  
标签:cur int max num 数组 思路 子序 最大

问题描述

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

解题思路

我最开始做这道题的时候是没有思路的,或者说,思路非常混乱,想到了双指针,想到了for循环,但是具体怎么做却没有一个清晰的思路。然后看了官方的答案才懂。

思路一:动态规划

class Solution {
    public int maxSubArray(int[] nums) {
        //储存子数组的和。(当前的和)
        int cur = 0;
        //和最大的子数组。(最大的和)
        int max = nums[0];
        for(int num:nums){
            //如果之前的子数组小于num,那么就抛弃之前的子数组,从num重新算起
            cur = Math.max(num,cur+num);
            //比较每次生成的子数组,找到最大的那一个
            max = Math.max(max,cur);
        }
        return max;
    }
}

首先for循环遍历数组的每个元素,使用cur这个变量盛放当前子数组的和,与下一个遍历的数组元素进行比较,如果当前子数组的和比下一个数组元素还小,那么就舍弃当前子数组,从下一个元素开始,重新创建子数组。

max是和最大的子数组,即将新生成的子数组与之前生成的子数组的和进行比较,将大的赋值给max,那么最后就可以得到最大的那个子数组和。

我想这个思路叫动态规划的原因是由于cur和max的两个值在每次循环中是不断变化的吧。

该思路的时间复杂度为O(n),空间复杂度为O(1)。

思路二:分治法(以后更新)

 

标签:cur,int,max,num,数组,思路,子序,最大
From: https://www.cnblogs.com/zhengfuweilai/p/17153312.html

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:最大数值
    题目:编写一个方法,找出两个数字​​a​​​和​​b​​中最大的那一个。不得使用if-else或其他比较运算符。示例:输入:a=1,b=2输出:2代码实现:classSolution{public......
  • JAVA 数组 数组算法 求最大值
    publicclassTest1{publicstaticvoidmain(String[]args){//需求:求最大值int[]nums={1,3,12,6,5};//定义最大值intma......
  • 最大权闭合子图
    前置知识:最大权闭合子图。这是个什么东东呢,它是对于每一个点赋一个值,求一个点集,点集内的所有点都必须包含它的所有后继,使这个点集的和最大。如以下图:图中的编号代表点......
  • 最长公共子序列
    1143.最长公共子序列力扣题目链接(opensnewwindow)给定两个字符串 text1和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新......
  • 如何在多项式时间内解决最大团问题
    如何在多项式时间内解决最大团问题本篇文章将会教你如何随机化硬草NP-Hard。SolutionA最大团问题有一个非常直观、简洁、但是错误的贪心做法:每次贪心地往当前最大团内......
  • 最大似然估计(maximum likelihood estimation, MLE)
    原理:给定一个概率分布D,假定其概率密度函数(连续分布)或概率聚集函数(离散分布)为fD,以及一个分布参数θ,我们可以从这个分布中抽出一个具有n个值的采样X1,X2,...,Xn,通过利用fD,我......
  • 算法刷题 Day 53 | ● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序
    1143.最长公共子序列体会一下本题和718.最长重复子数组的区别视频讲解:https://www.bilibili.com/video/BV1ye4y1L7CQhttps://programmercarl.com/1143.%E6%9C%8......
  • js计算树形数据最大层级数
    已知树形结构数据通过递归方式结合Math.max方法计算出树形结构最大层级数。consttreeData=[{title:"0-0",key:"0-0",children:[{......
  • Java中的数组长度最大值为什么是 Integer.MAX_VALUE - 8
    Java中的数组长度最大值为什么是Integer.MAX_VALUE-8/* 因为数组容量使用int类型数据进行标识, 所以我们认为数组容量MAX是Integer.MAX_VALUE, 但是在编译器中定义......
  • 【算法训练营day60】LeetCode84. 柱状图中的最大的矩形
    LeetCode84.柱状图中的最大的矩形题目链接:84.柱状图中的最大的矩形独上高楼,望尽天涯路感觉和接雨水很像。慕然回首,灯火阑珊处思路如下。我们可以遍历每根柱子,以当......