LeetCode 1296. 划分数组为连续数字的集合(map模拟)
1. 题目
给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。
如果可以,请返回 True;否则,返回 False。
示例 1:
输入:nums = [1,2,3,3,4,4,5,6], k = 4
输出:true
解释:数组可以分成 [1,2,3,4] 和 [3,4,5,6]。示例 2:
输入:nums = [3,2,1,2,3,4,3,4,5,9,10,11], k = 3
输出:true
解释:数组可以分成 [1,2,3] , [2,3,4] , [3,4,5] 和 [9,10,11]。示例 3:
输入:nums = [3,3,2,2,1,1], k = 3
输出:true示例 4:
输入:nums = [1,2,3,4], k = 3
输出:false
解释:数组不能分成几个大小为 3 的子数组。提示:
1 <= nums.length <= 10^5
1 <= nums[i] <= 10^9
1 <= k <= nums.length
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/divide-array-in-sets-of-k-consecutive-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 长度不能被k整除,不行
- map 对数字进行计数
- 循环从头开始遍历map,接下来出现的连续k个数字的计数减去第一个数的计数
- 计数为0的删除
class Solution {public:bool isPossibleDivide(vector<int>& nums, int k) {if(nums.size()%k != 0)return false;map<int,int> m;for(int i = 0; i < nums.size(); ++i)m[nums[i]]++;int cur, prev, i, count;while(!m.empty()){i = count = prev = 0;for(auto it = m.begin(); it != m.end() && i < k; ++it,++i){if(prev == 0){count = it->second;//第一个数的计数prev = it->first;m.erase(it);}else{if(prev+1 != it->first || it->second < count)return false;//数不连续,或者个数不够m[prev+1] -= count;if(m[prev+1] == 0)m.erase(prev+1);prev++;}}if(i != k)return false;//个数不够}return true;}
};
488 ms 49.7 MB
LeetCode 1296. 划分数组为连续数字的集合(map模拟)相关推荐
- leetcode1296. 划分数组为连续数字的集合(贪心算法)
给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合. 如果可以,请返回 True:否则,返回 False. 示例 1: 输入:nums = ...
- LeetCode 659. 分割数组为连续子序列
LeetCode 659. 分割数组为连续子序列 回顾 根据题意,每个元素只会涉及两种情况: 已经存在nums[i]-1结尾的序列,我们把nums[i]接到之前的某个序列后. 尝试以nums[i]为头 ...
- LeetCode 659. 分割数组为连续子序列(哈希)
文章目录 1. 题目 2. 解题 1. 题目 给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 . 如果可以完 ...
- leetcode 659. 分割数组为连续子序列(贪心算法)
给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 . 如果可以完成上述分割,则返回 true :否则,返回 f ...
- php 删除数字索引元素,PHP重置数组为连续数字索引的几种方式
释放双眼,带上耳机,听听看~! 比如这样的一个php数组: $arr = array( 1 => 'apple', 3 => 'banana', 5 => 'orange' ); 想 ...
- 【LeetCode】剑指 Offer 11. 旋转数组的最小数字
[LeetCode]剑指 Offer 11. 旋转数组的最小数字 文章目录 [LeetCode]剑指 Offer 11. 旋转数组的最小数字 一.遍历 二.二分法 总结 一.遍历 算法步骤: 遍历数组 ...
- 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java
<LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...
- 找出数组中最长的连续数字序列(JavaScript实现)
原始题目: 给定一个无序的整数序列, 找最长的连续数字序列. 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]. 小菜给出的解法: 1 func ...
- 【LeetCode】剑指 Offer 53 - I. 在排序数组中查找数字 I
[LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 文章目录 [LeetCode]剑指 Offer 53 - I. 在排序数组中查找数字 I 一.二分法 总结 一.二分法 ...
最新文章
- Python设计模式-桥接模式
- 使用C++实现Socket编程传输协议文件(包括大文件)
- springdatajpa命名规则_简单了解下spring data jpa
- PCANet --- 用于图像分类的深度学习基准
- Stack Overflow 上人气爆表的10个 Java 问题
- UART的FIFO功能
- 洛谷 【P1252】马拉松接力赛
- 新能源补贴退坡 广汽新能源、比亚迪不涨价 蔚来最狠!
- LA 3263 That Nice Euler Circuit (2D Geometry)
- 25.Yii2 自动加载
- 计算机组成原理习题答案(蒋本珊)
- 用python完成淘宝毫秒级抢单,助你秒杀淘宝折扣商品
- hdu-6638 Snowy Smile
- Latex常见符号对照表
- 安装snipe-IT遇到的php问题
- 志强CPU E5 E7参数,CPU内核参数对比图
- python可视化窗口库_Python可视化工具介绍——找到合适的库
- 导入mysql 1044_MySQL导入sql文件错误#1044
- 参会记录|2023 上海 CDC 城市领航者之夜(第一期)
- 重装服务器2012系统,WaveCN.com - 站长手记 - 站长手记 - WINDOWS SERVER 2012 R2 STANDARD 重装 WSUS 过程记录...
热门文章
- 关于android开发时,发生Error infalting classa com.baidu.mapapi.map.MapView的解决办法
- QT调用dll且进入DLL src code调试
- coreData mapView #include
- c语言实现线性表的算法,数据结构算法代码实现——线性表的定义(一)
- 有趣的反直觉的“三门问题”
- 小程序开发过程注意事项
- 消息中间件核心实体(1)
- Linq 实现sql中的not in和in条件查询
- 【代码笔记】iOS-清除图片缓存UIActionSheet
- 怎么在前台取的ViewBag中的值