lintcode(402)连续子数组求和
来源:互联网 发布:shift 在js中 编辑:程序博客网 时间:2024/05/29 05:06
描述:
给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大。输出答案时,请分别返回第一个数字和最后一个数字的下标。(如果两个相同的答案,请返回其中任意一个)
样例:
给定 [-3, 1, 3, -3, 4]
, 返回[1,4]
.
思路:
逐个累加求和,记录最小值和最大值的位置,最小值的下一位是丘壑最大值的起点,最大值[(sum- min)的最大值]的位置是和最大值的终点
public class Solution { /** * @param A an integer array * @return A list of integers includes the index of the first number and the index of the last number */ public ArrayList<Integer> continuousSubarraySum(int[] A) { // Write your code here if(A==null||A.length==0) return null; ArrayList<Integer> result = new ArrayList<Integer>(); result.add(-1); result.add(-1); int min = 0; int max = Integer.MIN_VALUE; int minpos = -1; int sum = 0; for(int i = 0;i<A.length;i++){ sum += A[i]; if(sum - min > max){ result.set(0 , minpos); max = sum - min; result.set(1 , i); } if(sum < min){ min = sum; minpos = i; } } int temp = result.get(0); result.set(0 , temp + 1); return result; }}
0 0
- lintcode(402)连续子数组求和
- LintCode : 连续子数组求和
- LintCode: 连续子数组求和
- lintcode,连续子数组求和
- 连续子数组求和-LintCode
- LintCode解题笔记 - 连续子数组求和
- lintcode刷题--连续子数组求和
- 连续子数组求和
- 连续子数组求和
- 连续子数组求和
- 连续子数组求和
- 连续子数组求和
- LintCode-连续子数组和
- 算法学习-连续子数组求和最大值
- 算法学习-连续子数组求和最大值
- 算法学习-连续子数组求和最大值
- 算法学习-连续子数组求和最大值
- lintcode-最长连续子序列
- 成功推销自己的八个方法
- ui5splitApp
- 和计算机专业学生谈学英语
- 翻转子串
- c/c++内存管理
- lintcode(402)连续子数组求和
- 缓存和内存的区别
- MFC Windows程序设计--公用控件
- Version 1.6.0 of the JVM is not suitable for the this product.Version:1.8 or greater is required
- C语言常用头文件及库函数——string.h
- 使用Python进行目录的对比
- 磁盘管理
- Java中缓存之内存缓存
- Js进阶知识(一)