Easy java O(n) solution


  • 0
    S
        public int findMaxLength(int[] nums) {
            int i, n = nums.length;
            
            Map<Integer, Integer> map = new HashMap<>();
            map.put(0, 0);
            int maxLen = 0;
            int diff = 0;
            Integer first;
            
            for (i=0;i<n;i++) {
                if (nums[i] == 0)
                    diff--;
                else
                    diff++;
                first = map.get(diff);
                if (first == null) {
                    map.put(diff, i+1);
                } else {
                    maxLen = Math.max(maxLen, i - first + 1);
                }
            }
            return maxLen;
        }
    }

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.