• Leetcode 659.分割数组为连续子序列


    分割数组为连续子序列

    输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数。返回你是否能做出这样的分割?

       

    示例 1:

    输入: [1,2,3,3,4,5]

    输出: True

    解释:

    你可以分割出这样两个连续子序列 :

    1, 2, 3

    3, 4, 5

       

    示例 2:

    输入: [1,2,3,3,4,4,5,5]

    输出: True

    解释:

    你可以分割出这样两个连续子序列 :

    1, 2, 3, 4, 5

    3, 4, 5

       

    示例 3:

    输入: [1,2,3,4,4,5]

    输出: False

       

    提示:

    1. 输入的数组长度范围为 [1, 10000]

     

     1 class Solution {
     2     public boolean isPossible(int[] nums) {
     3         Counter count = new Counter();
     4         Counter tails = new Counter();
     5         for (int x: nums) count.add(x, 1);
     6 
     7         for (int x: nums) {
     8             if (count.get(x) == 0) {
     9                 continue;
    10             } else if (tails.get(x) > 0) {
    11                 tails.add(x, -1);
    12                 tails.add(x+1, 1);
    13             } else if (count.get(x+1) > 0 && count.get(x+2) > 0) {
    14                 count.add(x+1, -1);
    15                 count.add(x+2, -1);
    16                 tails.add(x+3, 1);
    17             } else {
    18                 return false;
    19             }
    20             count.add(x, -1);
    21         }
    22         return true;
    23     }
    24 }
    25 
    26 class Counter extends HashMap<Integer, Integer> {
    27     public int get(int k) {
    28         return containsKey(k) ? super.get(k) : 0;
    29     }
    30 
    31     public void add(int k, int v) {
    32         put(k, get(k) + v);
    33     }
    34 }

     

     

     

  • 相关阅读:
    图像的分离合并
    图像旋转与格式转换
    图像的剪切和粘贴
    缩放图像
    遮罩混合
    透明度混合
    Anaconda安装jieba、snownlp等外部包
    anaconda3 中pip安装模块方法
    PHP读取文本文件内容并随机输出任意一行
    php读取在线远程txt文档内容到数组并遍历
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10394910.html
Copyright © 2020-2023  润新知