重庆模板网站建站,调研报告万能模板,北京高端网站公司哪家好,做门窗可以放什么网站1. 题目
给你一个整数数组 nums 和一个正整数 k#xff0c;请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。 如果可以#xff0c;请返回 True#xff1b;否则#xff0c;返回 False。
示例 1#xff1a;
输入#xff1a;nums [1,2,3,3,4,4,5,6], k …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(vectorint nums, int k) {if(nums.size()%k ! 0)return false;mapint,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(prev1 ! it-first || it-second count)return false;//数不连续或者个数不够m[prev1] - count;if(m[prev1] 0)m.erase(prev1);prev;}}if(i ! k)return false;//个数不够}return true;}
};488 ms 49.7 MB