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;
}
相关文章
|
机器学习/深度学习 算法 C语言
60天力扣打卡(第一天)
60天力扣打卡(第一天)
|
算法
60天力扣打卡(第2天)
60天力扣打卡(第2天)
|
运维 虚拟化
聊5块钱P2V
上一秒还在写代码,下一秒就跑机房干活。 这台机器产制石器时代,重启一次后再就启动不了了。这个故障处理的方式我们以后再谈。
|
机器学习/深度学习 机器人 C语言
使用阿里云十天
作为非计算机专业但对计算机感兴趣的学生,阿里云给了我一段不错的体验。
278 0
|
存储 人工智能 自然语言处理
零基础的我刷力扣一周后,总结了点东西
零基础的我刷力扣一周后,总结了点东西
264 0
零基础的我刷力扣一周后,总结了点东西
|
数据挖掘 Android开发
过年用神器抢了2天的红包,猜猜结果怎么样?
这是一篇神器使用的介绍贴,这里给大家说一下最近用了2天红包外挂的感受!每到过年,就会有一堆红包因为自己来不及抢,可能会错失一个亿。而今年在龙哥的介绍下,加了一个红包神器的销售商,准备抢他个第一桶金。
150 0
过年用神器抢了2天的红包,猜猜结果怎么样?
|
算法
蓝桥杯每日一刷(第二天)
蓝桥杯每日一刷(第二天)
136 0
|
Linux 虚拟化 数据中心