【最大子数组和】问题具体思路——【循环暴搜】【贪心】【动态规划】【分治】(附完整代码)


前言

本文将围绕【最大子数组和】问题展开讨论。

对于这一问题将采用多种思路方法来解决

【循环暴搜】【贪心】【动态规划】【分治】


一、如何理解【最大子数组和】?

题目链接: [点击跳转] Leetcode 53. 最大子数组和

题目如下:

请添加图片描述
这是一道经典的数组题,可以尝试多种方法来解决。


二、方法一(循环暴搜)

(方法一时间复杂度高易超时,也可从方法二开始浏览)

在读过题之后,我们很容易就会想到:

既然是找子数组,那么我们就可以做一个嵌套循环,一个双层的循环就可以表示任意一个含两个元素的子数组了。

就像这样:

for(int i=0;i<size;i++){
   
    for(int j=i+1;j<size;j++){
   

    }
}//(一个指向子数组开头,一个指向子数组末尾)

在这个嵌套循环进行的过程中,将元素累加起来,并记录下最大的子数组。

最后在找一遍单个元素的子数组,取最大,就OK啦!

代码如下:

class Solution {
   
public:
    int maxSubArray(vector<int>& nums) {
   
        int sum=0;//子数组和
        int size=nums.size();//数组大小
        int maxsum=INT_MIN;//表示最大子数组

        //判断两个及以上的相邻元素
        for(int i=0;i<size;i++){
   
            sum+=nums[i];
            for(int j=i+1;j<size;j++){
   
                sum+=nums[j]</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值