60天力扣打卡(第三天)

简介: 60天力扣打卡(第三天)

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

法一:

int maxSubArray(int* nums, int numsSize){
//假设子数列的起始点
     int i;
//假设子数列的末尾点
     int j;
//max可取INT_MIN,起始点
     int max=INT_MIN;
   for(i=0;i<numsSize;i++)
   {
         int sum=0;
       for(j=i;j<numsSize;j++)
       {
            sum=sum+nums[j];   //改进的方法
            if(sum>max)        //找子数列的最大值
            {
                max=sum;
                                 }
                                       }
                                          }
        return max;
}

法二:


我们从sum=sum+nums[k]下手。


第一次:sum=0+nums[0]


第二次:sum=0+nums[0]+nums[1]


第三次:sum=0+nums[0]+nums[1]+nums[2]


int maxSubArray(int* nums, int numsSize){
//假设子数列的起始点
     int i;
//假设子数列的末尾点
     int j;
//max可取INT_MIN,起始点
     int max=INT_MIN;
   for(i=0;i<numsSize;i++)
   {
            int sum=0;
       for(j=i;j<numsSize;j++)
       {
            sum=sum+nums[j];   //改进的方法
            if(sum>max)        //找子数列的最大值
            {
                max=sum;
                                 }
                                       }
                                          }
        return max;
}
相关文章
|
7月前
leetcode-1716:计算力扣银行的钱
leetcode-1716:计算力扣银行的钱
44 0
|
算法
60天力扣打卡(第2天)
60天力扣打卡(第2天)
|
机器学习/深度学习 算法 C语言
60天力扣打卡(第一天)
60天力扣打卡(第一天)
|
存储
怒刷力扣(爬楼梯)
斐波那契数列还会吗?初高中的求通项公式还会求吗?数学是不是白上了?如果你都还给老师了,那么赶紧找老师学回来吧。
119 0
怒刷力扣(爬楼梯)
|
存储 人工智能 自然语言处理
零基础的我刷力扣一周后,总结了点东西
零基础的我刷力扣一周后,总结了点东西
271 0
零基础的我刷力扣一周后,总结了点东西
|
XML JSON 前端开发
第三天
电子相册搭建