Subarray Sum Closest
来源:互联网 发布:百度贴吧和天涯知乎 编辑:程序博客网 时间:2024/05/20 19:47
Given an integer array, find a subarray with sum closest to zero. Return the indexes of the first number and last number.
Example
这道题需要新建一个class记录前i个数的sum和index。注意要新建一个pair(0,-1)来表示index 0之前的和等于0。遍历整个nums,计算前i个数的和,之后排序pairs数组,找到相邻差值最小的一对,保存下来index,这里需要注意,即使是相邻,他们的记录的下标可能是一前一后,或者以后一前,在赋值给res之前,先赋值给temp数组,对temp数组排序保证前小后大,在赋值给res。代码如下:Given [-3, 1, 1, -3, 5]
, return [0, 2]
, [1, 3]
, [1, 1]
, [2, 2]
or [0, 4]
.
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 */ class Pair { int sum, index; public Pair(int _sum, int _index) { this.sum = _sum; this.index = _index; } } public int[] subarraySumClosest(int[] nums) { // write your code here Pair[] pairs = new Pair[nums.length + 1]; pairs[0] = new Pair(0, -1); for (int i = 1; i <= nums.length; i ++) { pairs[i] = new Pair(pairs[i - 1].sum + nums[i - 1], 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; int[] res = new int[2]; for (int i = 1; i < pairs.length; i ++) { if (min > pairs[i].sum - pairs[i - 1].sum) { min = pairs[i].sum - pairs[i - 1].sum; int[] temp = new int[2]; temp[0] = pairs[i].index; temp[1] = pairs[i - 1].index; Arrays.sort(temp); res[0] = temp[0] + 1; res[1] = temp[1]; } } return res; }}
阅读全文
0 0
- [刷题]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
- 139. Subarray Sum Closest
- Lintcode139 Subarray Sum Closest solution 题解
- [算法题] 最接近零的子数组和 Subarray Sum Closest
- 139.Subarray Sum Closest-最接近零的子数组和(中等题)
- Subarray Sum
- Subarray Sum
- subarray sum
- Subarray Sum
- Subarray Sum
- 字段合并与分组聚合
- zookeeper如何做集群部署
- maven引入本地jar包的依赖
- mybatis快速得到排序结果
- 基于zookeeper的MySQL主主负载均衡的简单实现
- Subarray Sum Closest
- MTK平台修改imgsensor的hal代码后快速编译
- 互斥体_创建4线程_打印
- 八大基本排序算法 序
- HDFS集群搭建,高可用双机热备模式(HA)自动切换,hdfs+zookeeper+journalnode,步骤分步原理详解(适合初学者)
- 八大排序算法(3) 简单选择排序
- 八大排序算法(1) 插入排序
- 拓展欧几里得算法
- DBCP连接池