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;
     }
}
												
											Java实现 LeetCode 659 分割数组为连续子序列 (哈希)的更多相关文章
- Leetcode 659.分割数组为连续子序列
		
分割数组为连续子序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数.返回你是否能做出这样的分割? 示例 1: 输入: [1,2,3 ...
 - LeetCode——数组篇:659. 分割数组为连续子序列
		
659. 分割数组为连续子序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数.返回你是否能做出这样的分割? 示例 1: 输入: [ ...
 - Java实现 LeetCode 410 分割数组的最大值
		
410. 分割数组的最大值 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小. 注意: 数组长度 n 满足以下条件: ...
 - [Swift]LeetCode659. 分割数组为连续子序列 | Split Array into Consecutive Subsequences
		
You are given an integer array sorted in ascending order (may contain duplicates), you need to split ...
 - 《github一天一道算法题》:分治法求数组最大连续子序列和
		
看书.思考.写代码. /*************************************** * copyright@hustyangju * blog: http://blog.csdn. ...
 - leetcode 410. 分割数组的最大值(二分法)
		
1. 题目描述 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小. 注意: 数组长度 n 满足以下条件: 1 ≤ n ...
 - Leetcode 410.分割数组的最大值
		
分割数组的最大值 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小. 注意:数组长度 n 满足以下条件: 1 ≤ n ...
 - LeetCode 410——分割数组的最大值
		
1. 题目 2. 解答 此题目为 今日头条 2018 AI Camp 5 月 26 日在线笔试编程题第二道--最小分割分数. class Solution { public: // 若分割数组的最大值 ...
 - Java实现 LeetCode 416 分割等和子集
		
416. 分割等和子集 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: ...
 
随机推荐
- STM32 IAP 升级官方资料汇总
			
整理了一下SMT32标准外设库进行IAP升级的官方demo: 标准库版本 STM32F10xxx in-application programming using the USART (AN2557) ...
 - [poj2778 DNA Sequence]AC自动机,矩阵快速幂
			
题意:给一些字符串的集合S和整数n,求满足 长度为n 只含charset = {'A'.'T‘.'G'.'C'}包含的字符 不包含S中任一字符串 的字符串的种类数. 思路:首先对S建立ac自动机,考虑 ...
 - CentOS8 右键打开后没有终端
			
最近研究CentOS8 发现右键打开后没有终端这一项: 1.经过查询发现是没有安装一个包 2.使用命令进行安装并重启: [root@base ~]# yum -y install nautilus- ...
 - java mybatis中大于号小于号的转义
			
大于号: > 小于号: <
 - 1026 Table Tennis (30分) 难度不高 + 逻辑复杂 +细节繁琐
			
题目 A table tennis club has N tables available to the public. The tables are numbered from 1 to N. Fo ...
 - 我的linux学习日记day2
			
RPM 软件包管理器 目的:降低软件安装难度原理 :将软件源代码加上一套安装规则打包到一起,用户只需要运行RPM systemctl start 服务名称 开启服务systemctl stop 服务 ...
 - ql的python学习之路-day14
			
前言:本节主要学习时间模块time.datetime python中的几种时间表示:1)时间戳 2)格式化的字符串时间 3)struct_time元组格式的时间 time.datetime模块源码: ...
 - .NET 程序员的 Playground :LINQPad
			
如果想执行一个简单的 C# 语句并获得运行结果,通常我们需要做几个步骤才能达成: 打开 Visual Studio 并新建一个控制台项目. 在 Program.cs 中编写代码并保存. 点击运行按钮或 ...
 - linux下获取软件源码包 centos/redhat, debian/ubuntu
			
linux下获取软件源码包 centos/redhat, debian/ubuntu centos下: 1. yum install yum-utils 主要为了获取yumdownloader 2. ...
 - oracle start with
			
select * from t where 1=1 START WITH key_id=600 CONNECT BY PRIOR key_id = pid order by key_id desc