经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
LeetCode 53. Maximum Subarray
来源:cnblogs  作者:flowingfog  时间:2018/10/18 8:46:00  对本文有异议

分析

难度 易

来源

https://leetcode.com/problems/maximum-subarray/description/

题目

Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

Example:

  1. Input: [-2,1,-3,4,-1,2,1,-5,4],
  1. Output: 6
  1. Explanation: [4,-1,2,1] has the largest sum = 6.

Follow up:

If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

解答

  1. package LeetCode;
  2. /*
  3. 遍历array,对于每一个数字,我们判断,(之前的sum + 这个数字) 和 (这个数字) 比大小,如果(这个数字)自己就比 (之前的sum + 这个数字) 大的话,那么说明不需要再继续加了,直接从这个数字,开始继续,因为它自己已经比之前的sum都大了。
  4.     反过来,如果 (之前的sum + 这个数字)大于 (这个数字)就继续加下去。
  5. */
  6. public class L53_MaximumSubarray {
  7. public int maxSubArray(int[] nums) {
  8. int len=nums.length;
  9. int max=-java.lang.Integer.MAX_VALUE;
  10. if(nums==null||len==0)
  11. return max=0;
  12. else if(len==1)
  13. max=nums[0];
  14. else{
  15. int curMax=0;//dp[i]表示到第i个字符的最大字符串和
  16. for(int i=0;i<len;i++){
  17. curMax=Math.max(nums[i],curMax+nums[i]);//注意max函数的第一个参数
  18. if(curMax>max){
  19. max=curMax;
  20. }
  21. }
  22. }
  23. return max;
  24. }
  25. }

 

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号