【LeetCode】053. Maximum Subarray

题目:

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.

题解:

  遍历所有组合,更新最大和。

Solution 1 (TLE)

class Solution {
public:int maxSubArray(vector<int>& nums) {int n = nums.size(), result = nums[0];for(int i=0; i<n; ++i) {int tmp = nums[i];result = max(tmp,result);for(int j=i+1; j<n; ++j) {tmp += nums[j];result = max(tmp,result);}            }    return result;}
}; 

  可以看做动态规划的简略版,见Solution 5

Solution 2 ()

class Solution {
public:int maxSubArray(vector<int>& nums) {int n = nums.size(), result = nums[0], tmp = 0;for(int i=0; i<n; ++i) {tmp = max(tmp + nums[i], nums[i]);result = max(result, tmp);          }    return result;}
};

  贪心算法:The idea is to find the largest difference between the sums when you summing up the array from left to right. The largest difference corresponds to the sub-array with largest sum

Solution 3 ()

class Solution {
public:int maxSubArray(vector<int>& nums) {int sum = 0, minsum = 0, result = nums[0], n = nums.size();for(int i = 0; i < n; i++) {sum += nums[i];if(sum - minsum > res) result = sum - minsum;if(sum < minsum) minsum = sum;}return result;}
};

  分治法:

Solution 4 ()

  DP算法:维护一个一维数组。

Solution 5 ()

class Solution {
public:int maxSubArray(vector<int>& nums) {int n = nums.size();vector<int> dp(n,0);//dp[i] means the maximum subarray ending with nums[i];dp[0] = nums[0];int max = dp[0];for(int i = 1; i < n; i++){dp[i] = nums[i] + (dp[i - 1] > 0 ? dp[i - 1] : 0);max = Math.max(max, dp[i]);}        return max;}
};

 

转载于:https://www.cnblogs.com/Atanisi/p/6730921.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python怎么数据归一化_基于数据归一化以及Python实现方式

数据归一化&#xff1a;数据的标准化是将数据按比例缩放&#xff0c;使之落入一个小的特定区间&#xff0c;去除数据的单位限制&#xff0c;将其转化为无量纲的纯数值&#xff0c;便于不同单位或量级的指标能够进行比较和加权。为什么要做归一化&#xff1a;1)加快梯度下降求最…

Android面试总结经

自上周怒辞职以后&#xff0c;就開始苦逼的各种面试生涯&#xff0c;生活全然靠私活来接济&#xff0c;时有时没有&#xff0c;真难。还能快乐的玩耍吗。最多一天面试了5家&#xff0c;哎感觉都是不急招人&#xff0c;各种等待通知。好不easy等来一家。还克扣了薪资&#xff0c…

生成step文件_利用opencv给彦女王生成一副蒙太奇画像

大家好呀&#xff0c;前两天烈阳天道1上映了&#xff0c;不知道大家看没看呢&#xff0c;里面还有一小段彦穿越虫洞与猴哥相遇的画面&#xff0c;彦女王啊啊啊~~所以我去网上爬了二百来张我大学的风景画&#xff0c;然后找了以前存的彦女王的图片&#xff0c;生成了一幅蒙太奇画…

浪漫情人节|C语言画心型

1.前言新年第一天上班&#xff0c;先祝大家新年快乐&#xff0c;巧的是&#xff0c;今天刚好又是情人节&#xff0c;所以想了下用C实现画心形符号~过年的时候&#xff0c;跟我表哥去接新娘&#xff0c;实地看了下&#xff0c;如果一个汉字内心没有点浪漫的细胞&#xff0c;很难…

CS190.1x Scalable Machine Learning

这门课是CS100.1x的后续课&#xff0c;看课程名字就知道这门课主要讲机器学习。难度也会比上一门课大一点。如果你对这门课感兴趣&#xff0c;可以看看我这篇博客&#xff0c;如果对PySpark感兴趣&#xff0c;可以看我分析作业的博客。 Course Software Setup 这门课的环境配置…

嵩天python爬虫_我自己爬-python爬虫快速入门(一)

request库对于轻量级用户&#xff0c;像我一样只是准备写一个搞笑用的程序&#xff0c;requests是很方便的存在。安装通过pip就不说了request的几个主要方法requests.request() 构造一个请求&#xff0c;支撑以下各方法的基础方法requests.get() 获取HTML网页的主要方法&#x…

Linux_ACL_su

ACL ACL: 针对单一使用者, 文件, 目录进行rwx权限规范(当传统的Linux权限无法满足时采用) 1.ACL设置技巧: getfacl(取得ACL设置目录), setfacl(设置ACL规范) setfcal [-bkRd] [{-m | -x} acl 参数] 目标文件 m: 设置后续的acl参数给文件使用 x: 删除后续的acl参数 b: 移除…

./4.sh: No such file or directory

sh push到目标板后提示出错 #!/bin/bash echo "ladjfaosdjfoia"头bin/bash 我们要看&#xff0c;sh在哪里 130|rk3399_idpad:/data # which sh /system/bin/sh rk3399_idpad:/data # 所以上面的代码应该写成 #!/system/bin/sh echo "ladjfaosdjfoia"修…

Spring总结四:IOC和DI 注解方式

首先我们要了解注解和xml配置的区别&#xff1a; 作用一样&#xff0c;但是注解写在Bean的上方来代替我们之前在xml文件中所做的bean配置&#xff0c;也就是说我们使用了注解的方式&#xff0c;就不用再xml里面进行配置了&#xff0c;相对来说注解方式更为简便。 IOC获取对象注…

和后台如何对接_业务系统如何对接第三方服务?

在产品工作中&#xff0c;我们时常要对接第三方服务。本文作者从过往的对接项目经历中&#xff0c;提炼的关于业务系统&#xff0c;如何对接第三方服务的方法论&#xff0c;希望能对你有所帮助。随着公司业务的发展&#xff0c;我们有时会遇到&#xff0c;需要在自身业务系统中…

adb 启动某个apk

有时候需要用apk来启动某个apk adb shell am start -n com.android.launcher3/com.android.launcher3.Launcher 具体查看~ /rk3399_7in1/packages/apps/Launcher3/AndroidManifest.xml

Linux_PAM_用户之间的信息传递

PAM 账户信息的验证,可动态加载验证模块,提高验证的灵活性; PAM是一套应用程序接口,提供一连串的验证机制,借由一个与指令程序相同文件名的配置文件进行认证分析. 验证的过程包含三个字段: 1.验证类别(Type): author(认证):检验使用身份,需要密码进行检验account(账户):进行…

将枚举的键值绑定到下拉列表框

控制器代码&#xff1a; ///assemblyString&#xff1a;程序集名称的长格式&#xff0c;name&#xff1a;获取程序集实例中具有指定名称的 System.Type 对象&#xff0c;except&#xff1a;除了哪些枚举&#xff08;键或值都可以&#xff09;不加载到下拉列表框///此方法写在控…

Makefile 文件中的:obj-$(CONFIG_TEST) += test.o,这一类的是什么意思?

1、obj-$ $(CONFIG_TEST) 是一个整体&#xff0c;$(bbb)表示引用变量 bbb 比如定义 CONFIG_TESTy $(CONFIG_TEST) 就是 y obj-$(CONFIG_TEST) 就是 obj-y 又比如定义 CONFIG_TESTm $(CONFIG_TEST) 就是 m obj-$(CONFIG_TEST) 就是 obj-m obj-y foo.o 该例子告诉Kbuild在这目…

C++_IO类型_文件输入输出流_字符串流

IO类型 iostream: 用于窗口的输入输出fstream: 用于文件读写sstream :读写存储在内存中的string对象 注:他们继承于istream与ostream,因此istream对象也可用于读取ifstream, string对象, ostream对象同上; 并且iostream类型可在同一个流实现输入输出操作;. IO对象不可复制赋…

python网络编程证书_python 网络编程——客户端

网络通信的基本接口是socket&#xff0c;它扩展了操作系统的基本I/O到网络网络通信。socket可以通过socket()函数来建立&#xff0c;通过connect()函数来连接。得到了socket&#xff0c;可以确定本地和远程端点的IP地址和端口号。socket对不同的协议来说都是一种通用的接口&…

AC日记——集合位置 洛谷 P1491

集合位置 思路&#xff1a; 次短路&#xff1b; 先走一遍最短路&#xff1b; 记录最短路径&#xff0c;然后依次删边走最短路&#xff1b; 最短的长度就是次短路&#xff1b; 来&#xff0c;上代码&#xff1a; #include <queue> #include <cmath> #include <cs…

Kconfig中的“depends on”和“select”

在Kconfig文件中&#xff1a; config Adepends on Bselect C它的含义是&#xff1a;CONFIG_A配置与否&#xff0c;取决于CONFIG_B是否配置。一旦CONFIG_A配置了&#xff0c;CONFIG_C也自动配置了。 参考资料&#xff1a;“select” vs “depends” in kernel Kconfig。 所以去…

C++_虚继承_虚函数_纯虚函数(多继承的二义性,多态)

基本信息 每一个类都有一个虚表,以及虚表指针; 虚表的内容是编译器决定的,虚表中用于存放虚函数的指针, 程序运行时的类型信息等; 每个多态对象都存放着一个指向当前类型的虚表的指针, 该指针在构造函数中被赋值, 一般来说当调用当前这个类的构造函数, 则虚表指针就指向当前类…

数组的合并和升序排列_leetcode 33 搜索旋转排序数组

给你一个升序排列的整数数组 nums &#xff0c;和一个整数 target 。假设按照升序排序的数组在预先未知的某个点上进行了旋转。&#xff08;例如&#xff0c;数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] &#xff09;。请你在数组中搜索 target &#xff0c;如果数组中存在…