https://leetcode-cn.com/problems/hand-of-straights/solution/yi-shou-shun-zi-by-leetcode-solution-4lwn/

理解

  • 一副手牌hand和可以分的顺子组数量groupSize,当手牌数取余groupSize等于0时才可能完成分组,否则直接返回false
  • 贪心对于顺序的处理,存哈希表最合适,先将hand里所有数据都存到表中,以(x,1)的形式存,value+1
  • 当组出一幅牌的时候,将该牌从表中value-1,如果表内为0则remove,下次遍历的时候直接跳过已经组好的这幅牌
  • 一共有n/groupSize组牌,每组牌的范围是[x,x+groupSize−1]
  • 遍历升序排序好后的hand,开始按照图顺序遍历

代码

public static boolean isNStraightHand(int[] hand, int groupSize) {int n = hand.length;if (n % groupSize !=0) return false;Arrays.sort(hand);Map<Integer,Integer> cnt = new HashMap<>();for (int x:hand) {cnt.put(x,cnt.getOrDefault(x,0)+1);}for (int x:hand) {if (!cnt.containsKey(x)) continue;for (int j = 0; j < groupSize; j++) {int num = x + j;if (!cnt.containsKey(num)) return false;cnt.put(num,cnt.get(num)-1);if (cnt.get(num)==0)cnt.remove(num);}}return true;}

根据上面整理的思路逻辑代码就很好读懂了

逐步解析力扣846. 一手顺子 (贪心)相关推荐

  1. LeetCode55跳跃游戏//力扣55跳跃游戏(贪心)

    LeetCode55跳跃游戏//力扣55跳跃游戏(贪心) 来源:力扣(LeetCode) 链接:题目跳转 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该 ...

  2. LeetCode 846. 一手顺子(map)

    1. 题目 爱丽丝有一手(hand)由整数数组给定的牌. 现在她想把牌重新排列成组,使得每个组的大小都是 W,且由 W 张连续的牌组成. 如果她可以完成分组就返回 true,否则返回 false. 示 ...

  3. LeetCode力扣刷题——简单易懂的贪心算法

    贪心 一.算法解释 采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的. 贪心算法问题需要满足的条件: (1)最优子结构:规模较大的问题的解由规模较小的子问题的解组成,规模较 ...

  4. 力扣881. 救生艇(贪心,双指针)

    881. 救生艇 题目描述: 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人 ...

  5. 通俗易懂:贪心算法(二):区间问题 (力扣435无重叠区间)

    看完本文,可以顺便解决leetcode以下题目: 435.无重叠区间(中等) 一.通俗易懂的 贪心算法 |思想 (重复一次~~~) 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的,从而使得 ...

  6. 通俗易懂:贪心算法(一):分配问题 (力扣455分发饼干 和135分发糖果)

    看完本文,可以顺便解决leetcode以下两个题目: 455.分发饼干(简单) 135.分发糖果(困难) 一.通俗易懂的 贪心算法 |思想 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的, ...

  7. 20210322 :贪心思想力扣典型题目合集

    贪心思想力扣典型题目合集 写在前面 题目列表 思路分析 代码实现 写在前面 贪心的思想很多时候在于想到那个贪心的点上,而对徒手书写某些代码结构的能力并不做要求,个人认为需要的是你敏锐的意识到这个贪心的 ...

  8. 第 254 场力扣周赛(KMP、贪心、快速幂、二分+多源bfs、并查集 + 时光倒流)

    第 254 场力扣周赛 稀里糊涂双眼双眼惺忪的做了三道,错了4次...还是600来名 5843. 作为子字符串出现在单词中的字符串数目 题目描述 给你一个字符串数组 patterns 和一个字符串 w ...

  9. 力扣网---贪心算法(JAVA实现)---中等(一)

    分类记录力扣网刷题的笔记.也算对自己的督促. 目录 55,跳跃游戏 134,加油站 376,摆动序列 406,根据身高重建队列 452,用最少数量的箭引爆气球 649,Dota参议院 861.翻转矩阵 ...

最新文章

  1. Don’t Use the Win32 API PostThreadMessage() to Post Messages to UI Threads(翻译)
  2. 半导体基础知识(1):材料和器件
  3. 【更新】北京、广东、吉林重名数量查询工具,给孩子起名重名查询
  4. numpy中的matrix与array的区别
  5. boost::locale::to_upper用法的测试程序
  6. LINUX2.4.x网络安全框架
  7. 考虑长度、大小写的字符串对比
  8. opencv 和 parfor
  9. 二分查找离左边元素最近的(可以等于)
  10. 6位顺序号生成_分布式id生成策略,我和面试官扯了一个半小时
  11. Java 面向对象的设计原则
  12. 【今日CV 视觉论文速览】15 Nov 2018
  13. 规划 SOA 参考架构
  14. linux系统运行application,[分享]分享曾经做过的一个嵌入式系统application框架 | 勤奋的小青蛙...
  15. 详解Unity中的刚体和碰撞体组件
  16. 微信公众号关注自动回复,关键词自动回复,一个PHP文件就可以搞定!
  17. 解决CSDN访问速度慢的方法(绝对有效,无须修改hosts文件)
  18. mysql连接耗尽_避免数据库连接被耗尽的三种配置
  19. 在eclipse中修改tomcat端口
  20. SSH登录一条线理解前因后果

热门文章

  1. UPC——2020年春混合个人训练第二十五场(FG)
  2. 视频去水印前端界面布局
  3. 《VESR-Net: The Winning Solution to Youku Video Enhancement and Super-Resolution Challenge》论文阅读
  4. 单片机设计资料,仿真、程序、原理图收集好资料分享,stm32、8086、单片机方案
  5. The Codeless Code: Case 5 Void(void本质是什么)
  6. java1.7 apk 签名_【keytool jarsigner工具的使用】Android 使用JDK1.7的工具 进行APK文件的签名,以及keystore文件的使用...
  7. dhcp、tftp及pxe简介
  8. 基于 Amazon Amplify 构建自己的首个 iOS 应用程序(二)
  9. AD学习笔记(四)PCB布局分析
  10. 计算机职称证书退休工资,职称就像是一座大山,相同教龄不同职称的教师退休工资相差多少?...