题目

https://leetcode.com/problems/contiguous-array/

题解

想到了这个题,不过和本题没什么关系,仅仅是想到了而已:
https://leetcode.com/problems/flip-string-to-monotone-increasing/
以及 flip-string-to-monotone-increasing 这道题的迷之解法:

int minFlipsMonoIncr(char * s){int z = *s == '0' ? 0 : 1;int o = *s == '0' ? 1 : 0;for(s++; *s; s++){if(*s == '0'){o = (z < o ? z : o) + 1;}else{o = (z < o ? z : o);z++;}}return z < o ? z : o;
}

回到本题

一看数据范围是 1~10000,就知道这题必须 O(n)。

先贴一下没有什么卵用的错误思路草稿:
(错误在于,假设在0的个数少于1的个数,当前num=0的情况下,在更新的时候,你不知道应该取多少个0才合适。既不能取全部0,因为全部0不一定取的到,又不知道如果不取全部0的话,到底应该取多少,所以这个思路不可行。)

折腾了一个小时,打补丁,最后发现思路有结构性缺陷。于是看了答案。



class Solution {public int findMaxLength(int[] nums) {int diff = 0;HashMap<Integer, Integer> map = new HashMap<>();// (diff, index)map.put(0, -1);int max = 0;for (int i = 0; i < nums.length; i++) {if (nums[i] == 0) diff++;else diff--;if (!map.containsKey(diff)) map.put(diff, i);else max = Math.max(max, i - map.get(diff));}return max;}
}

leetcode 525. Contiguous Array | 525. 连续数组(Java)相关推荐

  1. 525 Contiguous Array 连续数组

    给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组. 示例 1: 输入: [0,1] 输出: 2 说明: [0, 1] 是具有相同数量0和1的最长连续子数组. 示例 2: 输入: ...

  2. 525. Contiguous Array两位求和为1的对数

    [抄题]: Given a binary array, find the maximum length of a contiguous subarray with equal number of 0 ...

  3. leetcode 932. Beautiful Array | 932. 漂亮数组(分治法)

    题目 https://leetcode.com/problems/beautiful-array/ 题解 没想出来,最后参考了[分治]通俗的官解分析 的思路. 推理过程 草稿 class Soluti ...

  4. LeetCode 525 连续数组/剑指 Offer II 011. 0 和 1 个数相同的子数组

    题目链接:525. 连续数组 思路:前缀和+哈希表 由于「0 和 1 的数量相同」等价于「1 的数量减去 0 的数量等于 0」,我们可以将数组中的 0 视作 -1,则原问题转换成「求最长的连续子数组, ...

  5. LeetCode-笔记-525. 连续数组

    LeetCode-笔记-525. 连续数组 6月份第三天前缀和了 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度. 示例 1: 输入: num ...

  6. java array缓存_有java数组

    [JAVA零基础入门系列]Day10 Java中的数组 [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 D ...

  7. 《LeetCode力扣练习》第33题 搜索旋转排序数组 Java

    <LeetCode力扣练习>第33题 搜索旋转排序数组 Java 一.资源 题目: 整数数组 nums 按升序排列,数组中的值 互不相同 . 在传递给函数之前,nums 在预先未知的某个下 ...

  8. java中set怎么建int型_使用Array.setInt来填充Java中的数组

    为了填充Java中的数组,我们使用Array.setInt()方法.java.lang.reflect.Array.setInt(Object array,int index,int value)方法 ...

  9. LeetCode——978. 最长湍流子数组(Longest Turbulent Subarray)——分析及代码(Java)

    LeetCode--978. 最长湍流子数组[Longest Turbulent Subarray]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划(一维数组) (1)思路 (2) ...

最新文章

  1. 作为Web开发人员,我为什么喜欢Google Chrome浏览器
  2. word 2010中如何创建多级目录和多级列表
  3. C++静态全局变量问题
  4. Iris——整合Gorm持久化的Casbin的Example
  5. OpenGL绘图过程简述
  6. javaweb学习总结(四十五)——监听器(Listener)学习二
  7. [解决]电信彩信网关开发错误-SOAP_VERSIONMISMATCH
  8. 列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]
  9. 低学历的人就不能创业了吗?
  10. 查询sql执行计划_使用SQL执行计划进行查询性能调整
  11. 零基础、转行学习Python是否还在纠结?这里告诉你答案!
  12. 怒爬某 Hub 资源就为撸了一个鉴黄平台
  13. 计算机辅助设计1(PS)期末考核试题,福师《计算机辅助设计1(PS)》期末试卷A卷...
  14. python名词_使用Python词性标记提取名词(循环)
  15. 双塔模型的瓶颈,究竟在哪?
  16. CTFHUB-SQL注入
  17. gdiplus 水印_GDI+ 实现透明水印和文字
  18. 使用setoolkit克隆钓鱼网站时修改网页错误的解决方法
  19. 《Mysql》必知必会读书笔记
  20. 千古奇文《钱本草》:看透金钱本质!

热门文章

  1. POJ - 2893 M × N Puzzle(n*m数码问题+逆序对结论)
  2. POJ - 1011 Sticks(dfs+剪枝)(好题!!)
  3. 基于python的搜索引擎论文_技术分享 - 基于python构建搜索引擎系列——(四)检索模型...
  4. 玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数
  5. 1_2 AbstractFactoryMode 抽象工厂模式
  6. 40个Java多线程问题详解复习
  7. 2020年前必须掌握的数据库面试问题~
  8. SQL 查询语句总是先执行 SELECT?
  9. 解密华为云原生媒体网络如何保障实时音视频服务质量
  10. 网易工业级WebRTC应用实践深度解析