逐步解析力扣846. 一手顺子 (贪心)
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. 一手顺子 (贪心)相关推荐
- LeetCode55跳跃游戏//力扣55跳跃游戏(贪心)
LeetCode55跳跃游戏//力扣55跳跃游戏(贪心) 来源:力扣(LeetCode) 链接:题目跳转 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该 ...
- LeetCode 846. 一手顺子(map)
1. 题目 爱丽丝有一手(hand)由整数数组给定的牌. 现在她想把牌重新排列成组,使得每个组的大小都是 W,且由 W 张连续的牌组成. 如果她可以完成分组就返回 true,否则返回 false. 示 ...
- LeetCode力扣刷题——简单易懂的贪心算法
贪心 一.算法解释 采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的. 贪心算法问题需要满足的条件: (1)最优子结构:规模较大的问题的解由规模较小的子问题的解组成,规模较 ...
- 力扣881. 救生艇(贪心,双指针)
881. 救生艇 题目描述: 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人 ...
- 通俗易懂:贪心算法(二):区间问题 (力扣435无重叠区间)
看完本文,可以顺便解决leetcode以下题目: 435.无重叠区间(中等) 一.通俗易懂的 贪心算法 |思想 (重复一次~~~) 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的,从而使得 ...
- 通俗易懂:贪心算法(一):分配问题 (力扣455分发饼干 和135分发糖果)
看完本文,可以顺便解决leetcode以下两个题目: 455.分发饼干(简单) 135.分发糖果(困难) 一.通俗易懂的 贪心算法 |思想 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的, ...
- 20210322 :贪心思想力扣典型题目合集
贪心思想力扣典型题目合集 写在前面 题目列表 思路分析 代码实现 写在前面 贪心的思想很多时候在于想到那个贪心的点上,而对徒手书写某些代码结构的能力并不做要求,个人认为需要的是你敏锐的意识到这个贪心的 ...
- 第 254 场力扣周赛(KMP、贪心、快速幂、二分+多源bfs、并查集 + 时光倒流)
第 254 场力扣周赛 稀里糊涂双眼双眼惺忪的做了三道,错了4次...还是600来名 5843. 作为子字符串出现在单词中的字符串数目 题目描述 给你一个字符串数组 patterns 和一个字符串 w ...
- 力扣网---贪心算法(JAVA实现)---中等(一)
分类记录力扣网刷题的笔记.也算对自己的督促. 目录 55,跳跃游戏 134,加油站 376,摆动序列 406,根据身高重建队列 452,用最少数量的箭引爆气球 649,Dota参议院 861.翻转矩阵 ...
最新文章
- Don’t Use the Win32 API PostThreadMessage() to Post Messages to UI Threads(翻译)
- 半导体基础知识(1):材料和器件
- 【更新】北京、广东、吉林重名数量查询工具,给孩子起名重名查询
- numpy中的matrix与array的区别
- boost::locale::to_upper用法的测试程序
- LINUX2.4.x网络安全框架
- 考虑长度、大小写的字符串对比
- opencv 和 parfor
- 二分查找离左边元素最近的(可以等于)
- 6位顺序号生成_分布式id生成策略,我和面试官扯了一个半小时
- Java 面向对象的设计原则
- 【今日CV 视觉论文速览】15 Nov 2018
- 规划 SOA 参考架构
- linux系统运行application,[分享]分享曾经做过的一个嵌入式系统application框架 | 勤奋的小青蛙...
- 详解Unity中的刚体和碰撞体组件
- 微信公众号关注自动回复,关键词自动回复,一个PHP文件就可以搞定!
- 解决CSDN访问速度慢的方法(绝对有效,无须修改hosts文件)
- mysql连接耗尽_避免数据库连接被耗尽的三种配置
- 在eclipse中修改tomcat端口
- SSH登录一条线理解前因后果
热门文章
- UPC——2020年春混合个人训练第二十五场(FG)
- 视频去水印前端界面布局
- 《VESR-Net: The Winning Solution to Youku Video Enhancement and Super-Resolution Challenge》论文阅读
- 单片机设计资料,仿真、程序、原理图收集好资料分享,stm32、8086、单片机方案
- The Codeless Code: Case 5 Void(void本质是什么)
- java1.7 apk 签名_【keytool jarsigner工具的使用】Android 使用JDK1.7的工具 进行APK文件的签名,以及keystore文件的使用...
- dhcp、tftp及pxe简介
- 基于 Amazon Amplify 构建自己的首个 iOS 应用程序(二)
- AD学习笔记(四)PCB布局分析
- 计算机职称证书退休工资,职称就像是一座大山,相同教龄不同职称的教师退休工资相差多少?...