zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 659 分割数组为连续子序列 (哈希)

    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, 10000]

    class Solution {
         public boolean isPossible(int[] nums) {
            Map<Integer, Integer> map = new HashMap<>();
            for (int i : nums) {
                map.put(i, map.getOrDefault(i, 0)+1);
            }
            for (int i : nums) {
                //子数组的元素个数
                int subNum = 0;
                int p = 1;
                //下个元素
                int next = i;
                while (map.getOrDefault(next, 0) >= p) {
                    p = map.get(next);
                    map.put(next, p-1);
                    ++subNum;
                    ++next;
                }
                if (subNum > 0 && subNum < 3) {
                    return false;
                }
            }
            return true;
         }
    }
    
  • 相关阅读:
    html5-本地数据库的操作
    html5_storage存取实例
    html5-表单常见操作
    js操作注意事项
    php扩展地址下载
    php serialize序列化对象或者数组
    php_memcahed 使用方法
    php_memcahed telnet远程操作方法
    php_memcahed 安装
    Liunx centos 系统 修改hostname
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075227.html
Copyright © 2011-2022 走看看