Contiguous Array
阿新 • • 發佈:2018-07-08
fin 復雜 圖片 else i++ ima 比較 方案 ray
2018-07-08 13:24:31
問題描述:
問題求解:
問題規模已經給出是50000量級,顯然只能是O(n),至多O(nlogn)的復雜度。本題使用DP和滑動數組都比較棘手,這裏給出的方案是preSum + HashMap的策略來進行解決,可以說方法是比較巧妙的。
public int findMaxLength(int[] nums) { int res = 0; HashMap<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) if (nums[i] == 0) nums[i] = -1; int sum = 0; map.put(0, -1); for (int i = 0; i < nums.length; i++) { sum += nums[i]; if (map.containsKey(sum)) res = Math.max(res, i - map.get(sum)); else map.put(sum, i); } return res; }
Contiguous Array