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;
         }
    }
    
  • 相关阅读:
    Hello Springboot
    Spring AOP
    代理模式
    Spring 面向注解开发
    Spring Bean 的配置
    IDEA 14 for Mac 提示要安装java 6的修改
    NAS DIY
    Maven Jetty SSL配置
    图书管理系统(jsp+nysql实现)
    互联网+XX项目技术架构
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946308.html
Copyright © 2011-2022 走看看