[刷题]Subarray Sum

来源:互联网 发布:windows php zip扩展 编辑:程序博客网 时间:2024/06/03 05:05

[LintCode]Subarray Sum

Version 1

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 ArrayList<Integer> subarraySum(int[] nums) {        // 2015-09-06 暴力 O(n^2)        ArrayList<Integer> rst = new ArrayList<>();        for (int i = 0; i < nums.length; i++) {            int sum = 0;            for (int j = i; j < nums.length; j++) {                sum += nums[j];                if (sum == 0) {                    rst.add(i);                    rst.add(j);                    return rst;                }            }        }        return rst;    }}

Version 2 用哈希表降低时间复杂度

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 ArrayList<Integer> subarraySum(int[] nums) {        // write your code here        int len = nums.length;               ArrayList<Integer> ans = new ArrayList<Integer>();        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();               map.put(0, -1);               int sum = 0;        for (int i = 0; i < len; i++) {            sum += nums[i];                       if (map.containsKey(sum)) {                ans.add(map.get(sum) + 1);                ans.add(i);                return ans;            }                        map.put(sum, i);        }               return ans;    }}



0 0
原创粉丝点击