【LeetCode笔记】剑指 Offer 61-. 扑克牌中的顺子 (Java、哈希表)

文章目录

  • 题目描述
  • 思路 & 代码
      • 二刷

题目描述

  • 感觉算比较有意思的简单题了,耗了不少时间优化= =
    在这里插入图片描述

思路 & 代码

  • 这次注释写得比较详细,直接看注释吧~
class Solution {public boolean isStraight(int[] nums) {// O(n) && O(n):哈希表Set<Integer> hashset = new HashSet<>();int max = -1, min = 14;for(int num : nums){// 0 不参与比较if(num == 0){continue;}// 重复情况直接 falseif(hashset.contains(num)){return false;}// 维护 max & min & sethashset.add(num);max = Math.max(max, num);min = Math.min(min, num);}// “无重复”,并且 max - min < 5,则一定顺子:用 min & max 固定首尾// a. 1 2 3 4 5// b. 0 0 1 2 5:固定 1 5,由于无重复,其他3个元素在中间刚好填了连续 1 xxx 5// c. 0 0 3 4 5:固定 3 5,同上,不过此处为 xx 3 x 5return max - min < 5;}
}

二刷

  • 呃,确实忘了最优写法了,但是总体复杂度不变的写法
  • 逐个维护,跑一遍五个数字,没有的用0来替。
class Solution {public boolean isStraight(int[] nums) {int min = Integer.MAX_VALUE;int counts = 0;Set<Integer> set = new HashSet<>(); for(int num : nums) {if(num == 0) {counts++;}else {set.add(num);min = Math.min(num, min);}}for(int i = min; i <= min + 4; i++) {if(!set.contains(i)) {if(counts > 0) {counts--;}else {return false;}}}return true;}
}
  • 最优写法:利用了各种条件(见之前的注释)
class Solution {public boolean isStraight(int[] nums) {int min = 14, max = -1;Set<Integer> set = new HashSet<>();for(int num : nums) {if(num == 0) {continue;}if(set.contains(num)) {return false;}else {set.add(num);min = Math.min(min, num);max = Math.max(max, num);}}return max - min < 5;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5分绩点转4分_工作复盘|因为这5点,4月份目标没完成

写在前面&#xff1a;用文字记录生活&#xff0c;让成长变得有迹可循&#xff01;4月份非常的繁忙&#xff0c;疫情慢慢消退&#xff0c;公司的业绩也慢慢在恢复&#xff1b;4月初的时候&#xff0c;公司定了月目标&#xff1a;成交100个学员&#xff08;非团单&#xff09;&am…

【LeetCode笔记】剑指 Offer 58 - I. 翻转单词顺序(Java、栈、双指针)

文章目录题目描述思路 & 代码二刷题目描述 用栈来做挺简单的&#xff0c;也可以用双指针。 思路 & 代码 既然是反向&#xff0c;那么从后往前&#xff0c;用双指针截取出字符串即可。 class Solution {// 双指针public String reverseWords(String s) {StringBuil…

python 修饰器 参数_具有参数的Python类修饰器,但未运行修饰的...

我已经大部分工作了.我想要一个类装饰器(Decorator类),该装饰器接受可用于将方法包装在对象(Person的实例)上的参数(问候和告别). 一切正常,除了…永远不会运行Person类上的原始命令功能&#xff01;如果我使用类似的方法手动调用该函数 output getattr(instance, func.func_n…

【LeetCode笔记】剑指 Offer 57-. 和为s的两个数字 (Java、对撞双指针)

文章目录题目描述思路 & 代码二刷题目描述 很好的一道思路题&#xff0c;可以用来理解状态、双指针。注意&#xff1a;数组有序&#xff0c;否则需要用哈希表来做。 思路 & 代码 双指针&#xff1a;从头、尾往里走&#xff0c;重点在于为何不会丢失解状态 S(x, y)&…

python tkinter画笑脸_Python3 tkinter基础 Canvas create_polygon 画三角形

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code """ Author : 行初心 Date : 18-9-30 Blog : www.cnblogs.com/xingchuxin GitHub : github.com/GratefulHeartCoder """ fr…

【LeetCode笔记】剑指 Offer 57- II. 和为 s 的连续正数序列(Java、滑动窗口、二刷)

文章目录题目描述思路 & 代码二刷题目描述 花了不少时间来优化 &#xff0c;很好的一道用来理解滑动窗口的题&#xff5e; 思路 & 代码 要点&#xff1a;为了 O(n) 复杂度&#xff0c;左右边界都只能往右走滑动窗口&#xff1a;存储当前连续正数序列 class Soluti…

设计一个类代表二维空间的一个圆。_平面设计基础——点、线、面

平面构成是以研究造型要素及构成规律为内容&#xff0c;讲点、线、面和基本形等视觉要素进行合理的排版合成在一个二维的平面上的艺术表现形式。平面构成是一种视觉形象的二维构成&#xff0c;主要是视觉的二维空间。平面构成他通过对造型要素的理性分析和严格的形式构成训练来…

【LeetCode笔记】剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(Java、二叉树、dfs)

文章目录思路 & 代码代码 & 思路二刷思路 & 代码 应该在二叉树的最近公共祖先之前写 需要用到二叉搜索树的特性&#xff5e; 代码 & 思路 分成四种情况即可&#xff0c;具体见代码注释时间复杂度 O(logn) /*** Definition for a binary tree node.* publ…

python类属性和实例属性_Python 类属性与实例属性,类对象与实例对象用法分析...

本文实例讲述了Python 类属性与实例属性&#xff0c;类对象与实例对象用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;demo.py&#xff08;类属性&#xff0c;所有实例对象共用类属性&#xff09;&#xff1a; # 定义工具类 继承object是为了兼容python2.x class …

【LeetCode笔记】剑指 Offer 65. 不用加减乘除做加法(Java、位运算、二刷)

文章目录题目描述思路 & 代码二刷题目描述 讲道理&#xff0c;感觉算有点难度的题目了 &#xff0c;还是需要时不时看看。 思路 & 代码 正负数情况可以不考虑&#xff08;补码&#xff09;核心&#xff1a;加法 进位和 非进位和关于位运算符的选择&#xff0c;le…

【LeetCode笔记】剑指 Offer 62. 圆圈中最后剩下的数字(Java、约瑟夫环、链表)

文章目录题目描述思路 & 代码链表模拟法数学方法二刷题目描述 约瑟夫环&#xff01;题目可太经典了说实话还是有点难度的 思路 & 代码 链表模拟法 第一想法是用 LinkedList&#xff0c;但是会超时&#xff0c;于是选择ArrayList关键在于 index (index m - 1) %…

【学习笔记】《Go 指南》

学习笔记 —— Go 指南 前言&#xff1a;先贴上网址&#xff0c;因为是先用 Typora 写&#xff0c;然后直接导入的&#xff0c;所以格式多多少少有点问题 文章目录学习笔记 —— Go 指南一. 包、变量和函数二. 流程控制语句 for、switch、if 和 defer三. 更多类型 struct、sli…

python怎么画参数函数图像_详解pandas.DataFrame.plot() 画图函数

首先看官网的DataFrame.plot( )函数 DataFrame.plot(xNone, yNone, kindline, axNone, subplotsFalse, sharexNone, shareyFalse, layoutNone,figsizeNone, use_indexTrue, titleNone, gridNone, legendTrue, styleNone, logxFalse, logyFalse, loglogFalse, xticksNone, ytick…

【学习笔记】第一章——操作系统的概念、功能、特征、发展分类(系统调用、并发共享虚拟异步)

文章目录一. 概念、功能与目标定义&#xff1a;功能1. 系统资源的管理者2. 用户和计算机硬件之间的接口3. 最接近硬件的层次二. 特征1. 并发2. 共享3. 虚拟4. 异步三. 发展分类1. 手工操作阶段2. 单道批处理系统3. 多道批处理系统4. 分时操作系统5. 实时操作系统总结一. 概念、…

【学习笔记】第一章——操作系统的运行机制、体系结构和内核(核心态、原语、大内核 微内核、特权指令)

文章目录总览一. 运行机制&#xff1a;1. 指令2. 处理器状态3. 程序二. 内核1. 定义2. 在层次结构中的划分三. 体系结构总览 重要知识点&#xff1a;特权指令 & 内核程序&#xff0c;只能在核心态执行 一. 运行机制&#xff1a; 1. 指令 指令&#xff1a;CPU 能识别、…

计算机视觉中的多视图几何_基于深度学习的视觉三维重建研究总结

三维重建意义三维重建作为环境感知的关键技术之一&#xff0c;可用于自动驾驶、虚拟现实、运动目标监测、行为分析、安防监控和重点人群监护等。现在每个人都在研究识别&#xff0c;但识别只是计算机视觉的一部分。真正意义上的计算机视觉要超越识别&#xff0c;感知三维环境。…

python列表添加字符串_2.python基础之—列表,元组,字典,集合,字符串的使用方法...

一.关于python序列的简介。 python里面的序列大部分都可以执行&#xff0c;索引&#xff0c;切片&#xff0c;加&#xff0c;乘&#xff0c;检查长度&#xff0c;以及检查某个成员是否存在&#xff0c;甚至还可以找出这个序列中最小的元素和最大的元素&#xff0c;并且序列都是…

【学习笔记】第一章——操作系统的中断和异常

文章目录总览一. 诞生、概念和作用二. 分类三. 外中断的处理过程四. 导图总结总览 异常&#xff1a;内中断 一. 诞生、概念和作用 早期计算机&#xff0c;程序只能串行执行&#xff0c;资源利用率低&#xff08;详可见OS 发展分类&#xff09;&#xff0c;为了解决这一问题…

python列表添加元素到中间_python在列表的元素中间插入空行

我写了一个手动输入后收集专辑信息的程序&#xff0c;写的很繁杂......是定义了一个可以将实参整理入字典的函数&#xff0c;再将字典放入列表 album_list [] def album(name, singer, quantities_of_songs): """record the info of a album"""…

【学习笔记】第一章——操作系统的系统调用(陷入指令、库函数、作用流程)

文章目录总览一. 定义与作用定义作用分类二. 系统调用和库函数的区别三. 系统调用背后的过程导图总结总览 面试常考题了&#xff0c;可得好好看看 XD 一. 定义与作用 定义 作用 结合下图例子理解按照我的理解&#xff0c;就是需要调用系统资源时&#xff0c;需要让 OS 来保…