139. Subarray Sum Closest
来源:互联网 发布:优盘数据恢复软件 编辑:程序博客网 时间:2024/05/20 19:29
Given an integer array, find a subarray with sum closest to zero. Return the indexes of the first number and last number.
Example
Given [-3, 1, 1, -3, 5]
, return [0, 2]
, [1, 3]
, [1, 1]
, [2, 2]
or [0, 4]
.
这个题目并不困难,需要计算一个前项和数组,然后将该数组排序,依次计算后项减前项的最小值,计算出分别计算出坐标,注意点,最小值的位置需要加一,因为最小值并不会被计算在内。
java
class Pairs { int index; int sum; public Pairs(int index, int sum) { this.index = index; this.sum = sum; }}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[] arr = new int[2]; if (nums == null || nums.length == 0) { return arr; } if (nums.length == 1) { arr[0] = arr[1] = 0; return arr; } Pairs[] p = new Pairs[nums.length + 1]; p[0] = new Pairs(0, 0); for (int i = 1; i <= nums.length; i++) { p[i] = new Pairs(i, p[i - 1].sum + nums[i - 1]); } Comparator<Pairs> cmp = new Comparator() { public int compare(Object a, Object b) { return ((Pairs)a).sum - ((Pairs)b).sum; } }; Arrays.sort(p, cmp); int max = Integer.MAX_VALUE; for (int i = 1; i <= nums.length; i++) { if (max > p[i].sum - p[i - 1].sum) { max = p[i].sum - p[i - 1].sum; arr[0] = p[i].index - 1; arr[1] = p[i - 1].index - 1; Arrays.sort(arr); } } arr[0]++; return arr; }}
阅读全文
0 0
- 139. Subarray Sum Closest
- [刷题]Subarray Sum Closest
- lintcode:Subarray Sum Closest
- lintcode: Subarray Sum Closest
- Subarray Sum Closest
- #139 Subarray Sum Closest
- Subarray Sum Closest
- Subarray Sum Closest
- [LintCode]Subarray Sum Closest
- Subarray Sum Closest
- Lintcode139 Subarray Sum Closest solution 题解
- 139.Subarray Sum Closest-最接近零的子数组和(中等题)
- [算法题] 最接近零的子数组和 Subarray Sum Closest
- Subarray Sum
- Subarray Sum
- subarray sum
- Subarray Sum
- Subarray Sum
- bzoj 4886: [Lydsy2017年5月月赛]叠塔游戏 并查集
- 文章标题
- 程序1
- OpenCV学习笔记1-环境安装
- CCF 201703-2 学生排队
- 139. Subarray Sum Closest
- 1020. 月饼 (25)
- delete大量数据时正确姿势(待测试)
- 当遇到jQuery操作checkbox无效
- MATLAB中做点标注ginput
- 编程必备的最基本5种算法思想
- 机器学习工程师必知的十大算法
- 定义字符指针数组分别指向5个字符串常量,从小到大输出字符串内容
- C语言结构体(预习)