给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。
如果可以,请返回 True;否则,返回 False

注意:此题目与 846 重复:https://leetcode-cn.com/problems/hand-of-straights/

示例 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
package Solution1296;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;class Solution {public boolean isPossibleDivide(int[] nums, int k) {Arrays.sort(nums);ArrayList<List<Integer>> alal = new ArrayList<List<Integer>>();ArrayList<Integer> al = new ArrayList<Integer>();if (nums.length > 0) {al.add(nums[0]);}alal.add(al);for (int i = 1; i < nums.length; i++) {boolean find = false;for (int j = alal.size() - 1; j > -1; j--) {if (nums[i] == alal.get(j).get(alal.get(j).size() - 1) + 1 && alal.get(j).size() < k) {alal.get(j).add(nums[i]);find = true;break;}}if (find == false) {ArrayList<Integer> temp = new ArrayList<Integer>();temp.add(nums[i]);alal.add(temp);}}System.out.println(alal);for (int i = 0; i < alal.size(); i++) {if (alal.get(i).size() != k) {return false;}}return true;}public static void main(String[] args) {Solution sol = new Solution();int[] nums = { 10, 9, 8, 1, 2, 3, 2, 3, 4, 4, 5, 6, 10, 11, 12 };int k = 3;System.out.println(sol.isPossibleDivide(nums, k));}
}

超时

他人通过的答案

package Solution1296;import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;class Solution {public boolean isPossibleDivide(int[] nums, int k) {if (nums.length % k != 0)return false;if (k == 1)return true;Arrays.sort(nums);Map<Integer, Integer> map = new HashMap<>();for (int num : nums)map.put(num, map.getOrDefault(num, 0) + 1);for (int num : nums) {if (map.get(num) != 0) {int start = num;int end = num + k - 1;while (start <= end) {Integer v = map.get(start);if (v != null && v > 0)map.put(start++, v - 1);elsereturn false;}}}return true;}public static void main(String[] args) {Solution sol = new Solution();int[] nums = { 10, 9, 8, 1, 2, 3, 2, 3, 4, 4, 5, 6, 10, 11, 12 };int k = 3;System.out.println(sol.isPossibleDivide(nums, k));}
}

1296. 划分数组为连续数字的集合相关推荐

  1. LeetCode 1296. 划分数组为连续数字的集合(map模拟)

    1. 题目 给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合. 如果可以,请返回 True:否则,返回 False. 示例 1: 输入:n ...

  2. leetcode1296. 划分数组为连续数字的集合(贪心算法)

    给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合. 如果可以,请返回 True:否则,返回 False. 示例 1: 输入:nums = ...

  3. php 删除数字索引元素,PHP重置数组为连续数字索引的几种方式

    释放双眼,带上耳机,听听看~! 比如这样的一个php数组: $arr = array( 1 => 'apple', 3 => 'banana', 5 => 'orange' ); 想 ...

  4. 找出数组中最长的连续数字序列(JavaScript实现)

    原始题目: 给定一个无序的整数序列, 找最长的连续数字序列. 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]. 小菜给出的解法: 1 func ...

  5. php 数组中连续的数字,php数组中最近的次要数字

    我有一个数组,例如(它可以是任何东西,但它已经订购): array(1,7, 12, 18, 25); 我需要找到最接近该数组的数字. 以上数组: $needle = 11; 我想要检索的数组中的数字 ...

  6. 《团队开发一(求一个数组的连续的子数组之和的最大值)》

    <团队开发一(求一个数组的连续的子数组之和的最大值)> (1)设计思想:一般的,求一个数组的最大子数组之和即是按数组顺序依次让前几个数的和与下一个数进行比较,设一变量来装每次比较后的较大的 ...

  7. js-FCC算法Smallest Common Multiple。找出两个参数和它们之间的连续数字的最小公倍数。...

    存档. 找出能被两个给定参数和它们之间的连续数字整除的最小公倍数. function smallestCommons(arr) {//分解质因数法,分解为若干个质数相乘var arrratio=[]; ...

  8. 算法练习day20——190411(重建二叉树、斐波那契数列、跳台阶、矩形覆盖、变态跳台阶、旋转数组的最小数字、矩阵中的路径)

    1.重建二叉树 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. preorder = [3,9,20,15,7].inorder = [9 ...

  9. 《剑指offer》— JavaScript(6)旋转数组的最小数字

    旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2, ...

  10. 【剑指offer - C++/Java】6、旋转数组的最小数字

    题目链接:旋转数组的最小数字 文章目录 1.题目描述 2.题目分析 3.代码 3.1 Java代码 3.2.C++代码 4.总结 1.题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数 ...

最新文章

  1. Forrester:全球供应商在中国处于领导地位 但本土供应商却在私有云市场蒸蒸日上...
  2. python—多线程之守护线程
  3. 商业模式新生代_业务分析基础 - 商业模式新生代01篇
  4. CheckBox as Image use button
  5. [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍
  6. cmd编译整个java项目_cmd中使用javac对整个包编译怎么办?对包里面的某几个java文件编译怎么办?...
  7. oracle 报错3113,内存不足导致安装时报错ORA-3113(一)
  8. Pytorch中expand_as()函数详解
  9. boost::bind with ros service,ros中ServiceServer用boost::bind绑定多个参数
  10. 白杨SEO:SEM和SEO有什么区别呢?
  11. c# formApp的web browser的兼容性设置
  12. 创蓝253国际短信调用接口说明
  13. virtualxposed使用教程_VirtualXposed 使用方法教程 —— 教您不 Root 用上强悍的 Xposed 框架 | 软件库...
  14. 手机录音如何转换成文字?学会这个简单方法,让你事半功倍!
  15. Nvidia 英伟达的NSight GPU 调试如何下载
  16. 众筹之家9月股权众筹行业简报
  17. 继中国区裁员后 甲骨文西雅图办公室再裁员数百人
  18. qqext(QQ2012显IP外挂)V1022 绿色版
  19. CVE和CVSS计算
  20. 2018年第二届机械工程与应用复合材料国际会议(MEACM2018)

热门文章

  1. 科大讯飞批量语音转文字
  2. Granted QOS different to Requested QOS
  3. requests爬虫搜狗微信公众号
  4. utf8和gbk的区别
  5. Java poi 生成PPT并插入Excel附件并以图片形式显示代-代码例子
  6. 设置Button图片位置
  7. 计算机ps图片在哪里看,怎么看图片有没有PS 两种查看照片有没被PS过的方法-电脑教程...
  8. VR、AR、MR以及数字孪生
  9. VR和AR的联系和区别
  10. 在图片上加滚动文字html,如何让文字在图片上滚动