leetcode35周双周赛题解记录(下)

  • 题目
  • 思路与算法
  • 代码实现
  • 复杂度分析

题目

3.1590. 使数组和能被 P 整除

4.1591. 奇怪的打印机 II

思路与算法

  1. 第三题前缀和衍生题目,需要一个同余定理的前缀知识,不多bb了,剩下就是前缀和加一些简单的处理技巧。
  2. 第四题图着色问题不再赘述见代码

代码实现

3.1590. 使数组和能被 P 整除

class Solution {public int minSubarray(int[] nums, int p) {int n = nums.length;Map<Integer, Integer> hashmap = new HashMap<>();hashmap.put(0,0);int[] presum = new int[n+1];int sum = 0;int ans = Integer.MAX_VALUE;    for (int i = 0; i < n ; i++){int now = nums[i];sum = (int)((long)(sum+now)%p);presum[i+1] = (int)((long)(presum[i]+now)%p);}int res = sum%p;for (int i = 1; i<=n ;i++){int cur = presum[i];hashmap.put(cur,i);int target = (int)((long)(cur-res+p)%p);if (hashmap.containsKey(target)){ans = Math.min(ans, i-hashmap.get(target));}}if (ans == Integer.MAX_VALUE || ans == n)return -1;return ans;}
}

4.1591. 奇怪的打印机 II

class Solution {class Node {int left;int up;int right;int bottom;Node(int a, int b, int c, int d) {left = a;up = b;right = c;bottom = d;}}public boolean isPrintable(int[][] targetGrid) {Map<Integer, Node> colorPos = new HashMap<>();// 找到每种color的左上右下角int m = targetGrid.length;int n = targetGrid[0].length;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {int color = targetGrid[i][j];if (colorPos.containsKey(color)) {Node node = colorPos.get(color);node.bottom = Math.max(node.bottom, i);node.up = Math.min(node.up, i);node.left = Math.min(node.left, j);node.right = Math.max(node.right, j);} else {colorPos.put(color, new Node(j, i, j, i));}}}Set<Integer> colors = new HashSet<>(colorPos.keySet());while (!colors.isEmpty()) {// 找到能删除的颜色,删除该颜色Set<Integer> deletion = new HashSet<>();  // 边forloop 一个set边删除,会有ConcurrentModificationExceptionfor (int c : colors) {if (isOneColor(targetGrid, colorPos.get(c), c)) {deletion.add(c);}}if (deletion.isEmpty()) {return false;}colors.removeAll(deletion);}return true;}private boolean isOneColor(int[][] targetGrid, Node boundary, int color) {// 检查边界长方形能不能完全删除for (int i = boundary.up; i <= boundary.bottom; i++) {for (int j = boundary.left; j <= boundary.right; j++) {if (targetGrid[i][j] > 0 && targetGrid[i][j] != color) {return false;}}}// 把这种color清空为0for (int i = boundary.up; i <= boundary.bottom; i++) {for (int j = boundary.left; j <= boundary.right; j++) {targetGrid[i][j] = 0;}}return true;}
}

复杂度分析

20200922:leetcode35周双周赛题解记录(下)相关推荐

  1. 20200920:leetcode35周双周赛题解(上)

    leetcode35周双周赛题解(上) 题目 思路与算法 代码实现 写在最后 题目 1.5503. 所有奇数长度子数组的和 2.5505. 所有排列中的最大和 思路与算法 第一题暴力就行了,看了很多大 ...

  2. 20200815:力扣201周周赛题解记录下

    力扣201周周赛题解记录下 题目 思路与算法 代码实现 题目 和为目标值的最大数目不重叠非空子数组数目 1547. 切棍子的最小成本 在这里插入图片描述 思路与算法 第3题还是一个简单的模拟,用set ...

  3. 20200827:2020力扣第33周双周赛题解

    2020力扣第33周双周赛题解 题目一 示例 解题思路与代码实现 题目二 示例 解题思路与代码实现 题目三 解题思路与代码实现 题目四 示例 解题思路与代码实现 写在最后 题目一 题目一:千位分隔数 ...

  4. 20200727:力扣第31周双周赛题解

    力扣第31周双周赛题解 题目一:在区间范围内统计奇数数目 给你两个非负整数low和high,请你返回low和high之间(包含二者)奇数的数目 0 <= low <= high <= ...

  5. 20200916:leetcode34周双周赛题解

    leetcode34周双周赛题解 题目 思路与算法 代码实现 写在最后 题目 1.1572. 矩阵对角线元素的和 2.1573. 分割字符串的方案数 3.1574. 删除最短的子数组使剩余数组有序 4 ...

  6. 20201016:力扣第210周周赛题解(下)

    力扣第210周周赛题解(下) 题目 思路与算法 代码实现 写在最后 题目 分割两个字符串得到回文串 统计子树中城市之间最大距离 思路与算法 第三题主要逻辑通顺就行,注意分割的索引是一样的,那么判断回文 ...

  7. 20200819:力扣202周周赛题解记录

    力扣202周周赛题解记录 题目一:[存在连续三个奇数的数组](https://leetcode-cn.com/problems/three-consecutive-odds/) 代码实现 题目二:[使 ...

  8. 20200729:力扣199周周赛题解(下)

    力扣199周周赛题解(下) 题目三:好叶子节点对的数量 给你二叉树的根节点 root 和一个整数 distance . 如果二叉树中两个叶节点之间的 最短路径长度 小于或者等于 distance ,那 ...

  9. 20210119:力扣第42周双周赛(下)

    力扣第42周双周赛(下) 题目 思路与算法 代码实现 写在最后 题目 修改后的最大二进制字符串 得到连续 K 个 1 的最少相邻交换次数 思路与算法 修改后的最大二进制字符串 这道题的思路很简单,交换 ...

最新文章

  1. 字节跳动李航:自学机器学习,研究AI三十载,他说AI发展或进入平缓期
  2. 一笔画问题 连通图(搜索+队列)
  3. BZOJ 1488 Luogu P4727 [HNOI2009]图的同构 (群论、Burnside引理、组合计数)
  4. buffer转int python_C/C++实战014:字符串转换及Python传参数组
  5. linux下面升级 Python版本并修改yum属性信息
  6. 使用Visio—UML画类图
  7. Angular 依赖注入 UseClass 和 UseExisting 的区别
  8. 从基础概念到数学公式,这是一份520页的机器学习笔记(图文并茂)
  9. 【报告分享】2019-2020广告主KOL营销市场盘点及趋势预测.pdf(附下载链接)
  10. MySQL学习笔记:limit
  11. 安卓获取签名证书SHA1值
  12. OpenGL超级宝典(第7版)之第九章片段处理与帧缓冲
  13. Python:try……excepted捕获方法
  14. 那山的那边海的这边有一群程序员
  15. PPT图片别再直接插入,这样处理一下,让你的PPT秒变高逼格
  16. 调查报告:创意行业是否为远程办公做好准备?
  17. Spring boot如何集成Redis(四)
  18. 如何辨别胖人多气虚阳虚,瘦人多血虚阴虚!【转】
  19. 做设计常用的素材下载网站
  20. 《Photoshop Lab修色圣典(修订版)》目录—导读

热门文章

  1. ofo 退押金出新招;快手回应“弃拼多多联手阿里”;Julia 1.3 发布 | 极客头条...
  2. Chronicle 已死,凶手是谷歌!
  3. 如何在 Python 数据中灵活运用 Pandas 索引?
  4. 软件工程师面试学习指南
  5. 这款颜值高的到底是剃须刀还是充电宝,这么黑科技?
  6. Python 进阶:全面解读高级特性之切片!
  7. 国庆通知:地球不爆炸,CSDN 不放假!
  8. Google 推出数据集搜索!百度怎么看?
  9. @苹果,iOS App 还需要多久才能运行在 Mac 上?
  10. 滴滴悬赏100万“捉拿”司机;手机QQ又宕机;中兴手机或将出售 | CSDN 极客头条...