lintcode-Continuous Subarray Sum
来源:互联网 发布:淘宝刷到一个钻多少钱 编辑:程序博客网 时间:2024/05/20 17:10
题目
Given an integer array, find a continuous subarray where the sum of numbers is the biggest. Your code should return the index of the first number and the index of the last number. (If their are duplicate answer, return anyone)
举例
Give [-3, 1, 3, -3, 4]
, return [1,4]
.
AC代码
class Solution {public: /** * @param A an integer array * @return A list of integers includes the index of * the first number and the index of the last number */ vector<int> continuousSubarraySum(vector<int>& A) { // Write your code here //if (A.empty() || A.size() == 0) return null; int max = INT_MIN; int minpos = 0, maxpos = 0; int sum = 0; vector<int> ans; ans.push_back(0); ans.push_back(0); for (int i = 0; i < A.size(); i++) { if(sum < 0) { sum = A[i]; minpos = maxpos = i; } else { sum += A[i]; maxpos = i; } if (sum >= max) { max = sum; ans[0] = minpos; ans[1] = maxpos; } } return ans; }};
思路
- 当sum 小于0时,则sum从下一个开始;
- sum大于等于0时,sum继续求和,maxpos向后移;
- 如果当sum大于max, 让max最大;
- 继续下一个元素。
总结
1.C++ 里找int型的最大数,最小数 ,可以用 #include<limit.h>
MAX_INT, MIN_INT
2.vector里的迭代器
vector :: iterator tt = A.begin();//t不是那个元素,而是指向那个数的指针,所以如果用值,则是 *t//要用到索引的是,最好A[i] ,A.at(i)
3.关于i++ 和 ++i
(1)如果只是看i++和++i,这两个是等价的,都等同于i=i+1,都是变量自身加1。
(2)在一般情况下,它们都是跟赋值联系在一起。
比如:int a; a=i++;//将i的值赋值给a,即a=i;
然后再执行i=i+1;
也就是【a=i++;】与【a=i; i=i+1;】等价。
a=++i;//将i+1的值赋给a,即a=i+1;
然后再执行i=i+1;
也就是【a=++i;】与【a=i+1;i=i+1;】等价。
(3)【总结一下】
①前置++是将自身加1的值赋值给新变量,同时自身也加1;
②后置++是将自身的值赋给新变量,然后才自身加1.
- lintcode:Continuous Subarray Sum
- [LintCode] Continuous Subarray Sum
- [Lintcode] Continuous Subarray Sum
- lintcode-Continuous Subarray Sum
- [LintCode] Continuous Subarray Sum II
- Continuous Subarray Sum II
- Continuous Subarray Sum
- 【LeetCode523】. Continuous Subarray Sum
- [LeetCode]Continuous Subarray Sum
- 题解:Continuous Subarray Sum
- 523. Continuous Subarray Sum
- 523. Continuous Subarray Sum
- 523. Continuous Subarray Sum
- leetcode523. Continuous Subarray Sum
- 523. Continuous Subarray Sum
- Continuous Subarray Sum
- 523. Continuous Subarray Sum
- 523. Continuous Subarray Sum
- RecyclerView第三方开源
- 计算分数加减表达式的值
- cookie 和session 的区别详解
- next数组求解详解
- 虚拟机3种网络模式(桥接、NAT、Host-only)
- lintcode-Continuous Subarray Sum
- Android隐式启动intent-filter详解
- 设计模式的基本原则
- Centos7 离线安装mysql 5.7
- 深入浅出Tensorflow(五):循环神经网络简介
- LeetCode | 75. Sort Colors
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- 数据库SQL优化大总结之 百万级数据库优化方案
- 回调机制之匿名回调之自我理解