LintCode 402: Continuous Subarray Sum
LintCode 402: Continuous Subarray Sum
题目描述
给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大。输出答案时,请分别返回第一个数字和最后一个数字的下标。(如果两个相同的答案,请返回其中任意一个)
样例
给定[-3, 1, 3, -3, 4]
, 返回[1,4]
.
Thu Feb 23 2017
思路
本题有很多解法,最巧妙的解法就是一遍扫描记忆的方法了,时间复杂度为\(O(n)\)。
用一个变量记录连续累加的和,当和为负数时,变量清零,从下一个数字开始累加记录。
在这里只需要注意一下一些小细节,比如如何记录最大子数组的起始位置,以及处理一下数组中所有的数都是负数的情况。
代码
// 连续子数组求和
vector<int> continuousSubarraySum(vector<int>& A)
{ int max_sum = -1, sum = 0, start;int is_all_negative = 1, max_num = -9e5, max_num_ind = -1vector<int> ans(2);for (int i = 0; i < A.size(); ++i){if (sum <= 0) start = i;sum += A[i];if (sum < 0) sum = 0;else if (sum > max_sum){is_all_negative = 0;max_sum = sum;ans[0] = start;ans[1] = i;}if (max_num < A[i]){max_num = A[i];max_num_ind = i;}}if (is_all_negative){ans[0] = ans[1] = max_num_ind;}return ans;
}
转载于:https://www.cnblogs.com/genkun/p/6435196.html
LintCode 402: Continuous Subarray Sum相关推荐
- LeetCode 523. Continuous Subarray Sum
题目: Given a list of non-negative numbers and a target integer k, write a function to check if the ar ...
- LeetCode-Easy部分中标签为Dynamic Programming 523. Continuous Subarray Sum
原题 Given a list of non-negative numbers and a target integer k, write a function to check if the arr ...
- [LintCode] Minimum Size Subarray Sum 最小子数组和的大小
Given an array of n positive integers and a positive integer s, find the minimal length of a subarra ...
- 523. Continuous Subarray Sum
class Solution { public:bool checkSubarraySum(vector<int>& nums, int k) {unordered_map< ...
- leetcode523 Continuous Subarray Sum
思路: 令sum[p]表示p位置的前缀和.如果sum[i] % k == sum[j] % k (j - i > 1),则存在子段(i, j]的和能够整除k. 实现: 1 class Solut ...
- 【leetcode】523. Continuous Subarray Sum
题目如下: 解题思路:本题需要用到这么一个数学定理.对于任意三个整数a,b,k(k !=0),如果 a%k = b%k,那么(a-b)%k = 0.利用这个定理,我们可以对数组从头开始进行求和,同时利 ...
- leetcode 523. Continuous Subarray Sum | 523. 连续的子数组和(同余定理)
题目 https://leetcode.com/problems/continuous-subarray-sum/ 题解 没有想到 O(n) 的方法,于是直奔答案: 参考1:[宫水三叶]拓展到求方案数 ...
- LeetCode Subarray Sum Equals K
原题链接在这里:https://leetcode.com/problems/subarray-sum-equals-k/description/ 题目: Given an array of integ ...
- leetcode-581-Shortest Unsorted Continuous Subarray
题目描述: Given an integer array, you need to find one continuous subarray that if you only sort this su ...
最新文章
- 熬了几个大夜,学完一套985博士总结的「卷积神经网络、目标检测、OpenCV」学习笔记(20G高清/PPT/代码)...
- java 深拷贝 流_(转)Java技巧:深拷贝的两种方式
- 2021年春季学期-信号与系统-第十次作业参考答案-第四小题
- 随机数计算html,随机数的产生方法 电脑随机数产生的计算具体方法
- 计算机进位计数制实训课教案,《计算机应用基础》职高2010修订版 教案.doc
- 最大化平均值 (二分搜索法)
- JS转字符 判断数字等
- 解决Jenkins的job启动tomcat时会在job结束时关闭问题
- Git中Add后对部分文件进行取消
- centos 安装tmux
- linux学习小记 (一 )
- Android中的权限请求
- 15 年工龄的阿里P9职场历程自述
- C#判断一个数是否为素数
- 重磅白皮书发布,华为持续引领未来智慧园区建设新模式
- ubuntu 16.04 + GTX1050安装nvidia驱动
- multiple definition of...
- SAP 获取本机信息(IP及电脑名称)
- 实时计算Flink+Hologres
- 2018年山东外贸进出口1.93万亿元创历史新高