首页 > 其他分享 >53. 最大子数组和

53. 最大子数组和

时间:2022-10-13 19:26:41浏览次数:48  
标签:最大 nums maxAns number 53 数组 var prev

给你一个整数数组 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
 

提示:

1 <= nums.length <= 105
-104 <= nums[i] <= 104
 

进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的 分治法 求解。

方法一:动态规划

 1 /**
 2  * @param {number[]} nums
 3  * @return {number}
 4  */
 5 var maxSubArray = function(nums) {
 6     let prev=0,maxAns=nums[0];
 7     nums.forEach((x)=>{
 8          prev=Math.max(prev+x,x);
 9          maxAns=Math.max(maxAns,prev);
10     })
11     return maxAns
12 };

时间复杂度:O(n)

空间复杂度:O(1)

方法二:暴力解法

 1 /**
 2  * @param {number[]} nums
 3  * @return {number}
 4  */
 5 var maxSubArray = function(nums) {
 6  var sum = 0;
 7  var max=nums[0];
 8  for(let i =0;i<nums.length;i++){
 9      sum+=nums[i];
10      max=Math.max(sum,max);
11      if(sum<0){
12          sum=0;
13      }
14  }
15 return max;
16 };

标签:最大,nums,maxAns,number,53,数组,var,prev
From: https://www.cnblogs.com/icyyyy/p/16789344.html

相关文章

  • js数组去重
    数组去重关键点在于indexOf()的使用,未查询到目标字符串时返回值为-1//数组去重vararr=[45,12,1,2,4,45,12,3,4,5,5,6];varnewArr=[];......
  • 冒泡排序(对于数组元素较少的可以采用这种方法进行比较)
    对于数组个数比较少的,我们可以采用冒泡排序的方法来进行排序,他的原理其实是利用两层循环来进行比较,如果n个数要进行排序,那至少要进行n-1次的回合,而且每次需要排n-i次,就像吐......
  • 数组的find/findIndex详解
    ​​find()​​ 返回数组中满足提供的测试函数的第一个元素的值。否则返回undefined。​​find​​​方法对数组中的每一项元素执行一次​​callback​​​ 函数,直至有一......
  • 将多层级数组转化为一级数组(即提取嵌套数组元素最终合并为一个数组)
    需求:多维数组=>一维数组letary=[1,[2,[3,[4,5]]],6];//->[1,2,3,4,5,6]1.调用ES6中的flat方法ary=ary.flat(Infinity); ​​flat()​​ 方法会移除数......
  • JS判断数组中是否包含某个值
    方法一:array.indexOf此方法判断数组中是否存在某个值,如果存在,则返回数组元素的下标,否则返回-1。vararr=[1,2,3,4]varindex=arr.indexOf(3)console.log(index)方法......
  • arguments详解,类数组转数组方法
    为什么需要arguments对象由于​​JavaScript​​​允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数。这就是​​arguments​​对象的由来。通......
  • 【笔记】最大公约数的一些性质
    裴蜀定理\[\foralla,b\in\mathbb{Z},\existsx,y\in\mathbb{Z},ax+by=\gcd(a,b)\]证明对于\(a_1=a_2=\cdots=a_n=0\),可以构造\(x_1=x_2=\cd......
  • 538DEL管理权限
    管理权限1.权限管理:江1.查询权限:2.授予权限︰3.撤销权限∶SHOWGRANTSFOR'用户名'@'主机名'; 现在没有任何权限只允许登录SHOWGRANTSFOR'root'@'root'......
  • 536管理用户增删改和537管理用户修改密码
    管理用户增删改DCLSQL分类:DDL:操作数据库和表MDL:增删改表中数据DQL:查询表中数据DCL:管理用户授权DBA:数据库管理员。DCL管理用户授权管理用户添加用户语法......
  • 剑指Offer03.数组中重复的数字
    1.题目描述找出数组中重复的数字。在一个长度为n的数组nums里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复......