某公司面试题:连续子数组的最大和
来源:互联网 发布:华为盒子软件推荐 编辑:程序博客网 时间:2024/04/29 20:30
题目:
输入一个整型数组,元素有整有负,如{1,-2,3,10,-4,7,2,-5}。求连续子数组和的最大值,时间复杂度O(n)。
题解:
遍历数组元素并求和,用变量maximum记录出现过的和的最大值,用curMaximum记录当前和的最大值,当curMaximum小于0时,curMaximum+下一个元素 < 下一个元素,可直接将curMaximum设为下一个元素值,若curMaximum > maximum,修改maximum为curMaximum。
class Solution {public:Solution():isValidInput(true){}int FindGreatestSum( int* inputArray, int length ){if(!inputArray){isValidInput = false;return 0;}int maximum = 0x80000000;int curMaximum = 0;for(int i = 0; i < length; i++){if(curMaximum < 0)curMaximum = inputArray[i];elsecurMaximum += inputArray[i];if(curMaximum > maximum)maximum = curMaximum;}return maximum;}bool isValidInput;};
动态规划思想:
curMax[i] = Data[i] if curMax[i-1] < 0 or i = 0;
curMax[i] = Data[i] + curMax[i-1] if i > 0 && curMax[i-1] >= 0
最后找最大的curMax[i],或者在计算过程中用变量保存全局maximum。
0 0
- 某公司面试题:连续子数组的最大和
- 面试题:最大连续子数组和
- 面试题31:连续子数组的最大和
- 面试题27:连续子数组的最大和
- 面试题31:连续子数组的最大和
- 面试题整理9 连续子数组的最大和
- 连续子数组的最大和(面试题 31)
- 面试题31 连续子数组的最大和
- 面试题 连续子数组的最大和
- 面试题(2)连续子数组的最大和
- 面试题31:连续子数组最大的和
- 面试题31:连续子数组的最大和
- 面试题31:连续子数组的最大和
- 面试题31:连续子数组的最大和
- 《剑指Offer》面试题:连续子数组的最大和
- 【面试题】连续子数组的最大和
- 面试题35:连续子数组的最大和
- 面试题31:连续子数组的最大和(java)
- WordPress修改文章列表显示摘要
- Best Time to Buy and Sell Stock III
- 02-采用时间戳技术防止重复提交
- A Digit Recognizer——基于HTK实现数字串识别系统
- HTML5开发教程:如何创建一个服务器端脚本?
- 某公司面试题:连续子数组的最大和
- Triangle
- Pascal's Triangle
- 单元测试利器 JUnit 4
- Linux常用命令
- Pascal's Triangle II
- 02-struts标签中的if..else.
- android开发教程之如何获取联系人名称?
- Log4j Java 配置 1.2.8