【LeetCode每日一题】53. 最大子数组和

https://leetcode.cn/problems/maximum-subarray/description/

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

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

方式一:暴力解法(超时)

先算出数组的前缀和,然后通过2个for循环遍历出所有的连续子数组。

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxSubArray = function(nums) {
   
    let prefixArr = [];
    let sum = 0;
    for(let num of nums){
   
        sum += num;
        prefixArr.push(sum);
    }
    prefixArr.unshift(0);

    // let max = prefixArr[0];
    let max = -Infinity
    for(let i = 0; i < prefixArr.length-1; i++){
   
        for(let j = i+1 ; j < prefixArr.length; j++){
   
            max = Math.max(max, prefixArr[j] - prefixArr[i]);
        }
    }
    return max;
}

方式二:

寻找一个具有最大和的连续子数组,算出以每个元素结尾的最大和,在这些最大值里求最大值。

对于元素A来说,以它结束的最大值 = Math.max(元素A,元素A+前一个元素的最大值)

遍历,求出以每个元素结尾的最大值放在一个数组。

求该数组的最大值。

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxSubArray = function(nums) {
   
    let max = 0
		let arr = []
    **for(**let num of nums){
   
        max = Math.max(max+num, num);
				arr.push(max)
    }
    return Math.max(...arr);
};

根据方式二,可以在遍历的时候将数据就进行比较。

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxSubArray = function(nums) {
   
    let res = nums[0];
    let max = 0
    for(let num of nums){
   
        max = Math.max(max+num, num);
        res = Math.max(res, max);
    }
    return res;
};

相关推荐

  1. LeetCode每日53.

    2023-12-14 18:36:01       58 阅读
  2. 【C】每日 53

    2023-12-14 18:36:01       31 阅读
  3. LeetCode[53]

    2023-12-14 18:36:01       60 阅读
  4. LeetCode 53

    2023-12-14 18:36:01       55 阅读
  5. 53. (力扣LeetCode

    2023-12-14 18:36:01       44 阅读
  6. leetcode 53

    2023-12-14 18:36:01       32 阅读
  7. leetcode 53.

    2023-12-14 18:36:01       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-14 18:36:01       75 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-14 18:36:01       80 阅读
  3. 在Django里面运行非项目文件

    2023-12-14 18:36:01       64 阅读
  4. Python语言-面向对象

    2023-12-14 18:36:01       75 阅读

热门阅读

  1. python实现切割mp4视频,按照指定要求截取视频

    2023-12-14 18:36:01       64 阅读
  2. NFR 数字权益开发流程

    2023-12-14 18:36:01       67 阅读
  3. 【python并发任务的几种方式】

    2023-12-14 18:36:01       52 阅读
  4. 什么是Composer Autoloader?如何使用它?

    2023-12-14 18:36:01       59 阅读
  5. 高级算法设计与分析:规约问题

    2023-12-14 18:36:01       61 阅读
  6. 运维笔记之centos7安装mysql数据库

    2023-12-14 18:36:01       56 阅读
  7. 强烈推荐各类好用免费api

    2023-12-14 18:36:01       55 阅读
  8. 解决zabbix连接mysql 8数据库的异常问题

    2023-12-14 18:36:01       59 阅读
  9. android 上下轮播,广播 BulletinView

    2023-12-14 18:36:01       45 阅读
  10. android项目实战之选择图片并上传服务器

    2023-12-14 18:36:01       54 阅读
  11. 工作招聘

    2023-12-14 18:36:01       58 阅读