525. 连续数组

image.png

解法

巧妙地将0转换成-1,利用counter记录前缀和所在的位置,这样两个相同的前缀和之间的长度就是连续的相同数据的0和1.

class Solution {
    public int findMaxLength(int[] nums) {
       int maxLength = 0;
       Map<Integer, Integer> map = new HashMap<>();
       int counter = 0;
       map.put(counter, -1);
       for (int i = 0; i < nums.length; i++) {
        int num = nums[i];
        if (num == 0) {
            counter += -1;
        } else {
            counter += 1;
        }
        if (map.containsKey(counter)) {
            maxLength = Math.max(maxLength, i - map.get(counter));    
        } else {
            map.put(counter, i);
        }
       } 
       return maxLength;                    
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容