[LintCode]Subarray Sum Closest
来源:互联网 发布:淘宝直播达人大v申请 编辑:程序博客网 时间:2024/05/10 02:03
http://www.lintcode.com/en/problem/subarray-sum-closest/
找到和最接近0的子数组
前缀和,并且记录坐标,然后对于前缀和排序,找出相邻两个之差值最接近0的,差值肯定是正数,但是index前后位置关系不定,所以子数组的和可正可负
public class Solution { /** * @param nums: A list of integers * @return: A list of integers includes the index of the first number * and the index of the last number */ public int[] subarraySumClosest(int[] nums) { // write your code here int[] res = new int[2]; if (nums == null || nums.length <= 1) { return res; } int len = nums.length; Pair[] pairs = new Pair[len + 1]; pairs[0] = new Pair(0, 0); for (int i = 0; i < len; i++) { // 因为子数组0 ~ i可能和为0,最开始位置和为0,这样后续排序的时候会有影响,所以index要加一 pairs[i + 1] = new Pair(pairs[i].sum + nums[i], i + 1); } Arrays.sort(pairs, new Comparator<Pair>() { public int compare(Pair p1, Pair p2) { return p1.sum - p2.sum; } }); int min = Integer.MAX_VALUE; for (int i = 1; i <= len; i++) { if (min > pairs[i].sum - pairs[i - 1].sum) { int[] temp = {pairs[i].index - 1, pairs[i - 1].index - 1}; min = pairs[i].sum - pairs[i - 1].sum; Arrays.sort(temp); res[0] = temp[0] + 1; res[1] = temp[1]; } } return res; }}class Pair { int sum; int index; public Pair(int sum, int index) { this.sum = sum; this.index = index; }}
0 0
- lintcode:Subarray Sum Closest
- lintcode: Subarray Sum Closest
- [LintCode]Subarray Sum Closest
- [刷题]Subarray Sum Closest
- Subarray Sum Closest
- #139 Subarray Sum Closest
- Subarray Sum Closest
- Subarray Sum Closest
- Subarray Sum Closest
- 139. Subarray Sum Closest
- lintcode:3 Sum Closest
- LintCode Two Sum Closest
- lintcode:Continuous Subarray Sum
- [LintCode] Continuous Subarray Sum
- *[Lintcode] Subarray Sum
- [Lintcode] Continuous Subarray Sum
- LintCode Subarray Sum
- lintcode-Continuous Subarray Sum
- linux基础之管理网络
- 本文介绍线性表、堆栈、队列的特点,及代码实现
- BZOJ 3207: 花神的嘲讽计划Ⅰ Hash,预处理或者在线主席树
- spring源码学习之路---IOC初探(二)
- cookie、session、sessionid 与jsessionid
- [LintCode]Subarray Sum Closest
- 漫反射辐照——并不是很完全的翻译
- MySQL语法及基础知识大全
- Mac 10.11.6 Python MySQLdb
- spring源码学习之路---IOC实现原理(三)
- 如何在树莓派3B上安装和编译OpenCV 2.4.13.0
- C3D Usage Summary
- spring源码学习之路---深度分析IOC容器初始化过程(四)
- Android开发 调试神器——Stetho介绍