写点什么

【leetcode 刷题】42,java 软件开发工程师面试题目

作者:MySQL神话
  • 2021 年 11 月 28 日
  • 本文字数:976 字

    阅读完需:约 3 分钟

难度:简单


从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。2~10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。



示例 1:



输入: [1,2,3,4,5]


输出: True




示例 2:



输入: [0,0,1,2,5]


输出: True




限制:



数组长度为 5



数组的数取值为 [0, 13] .


Solution




排序+去重



最大-最小<5


  • 遍历五张牌,遇到大小王直接跳过。

  • 判别重复: 利用 Set 实现遍历判重

  • 获取最大 / 最小的牌遍历统计即可。


Code




所有leetcode代码已同步至github



欢迎star


/**


  • @author 一条 coding


*/


class Solution {


public boolean isStraight(int[] nums) {


Set<Integer> repeat = new HashSet<>();


int max = 0, min = 14;


for(int num : nums) {


if(num == 0) continue; // 跳过大小王


max = Math.max(max, num); // 最大牌


min = Math.min(min, num); // 最小牌


if(repeat.contains(num)) return false; // 若有重复,提前返回 false


repeat.add(num); // 添加此牌至 Set


}


return max - min < 5; // 最大牌 - 最小牌 < 5 则可构成顺子


}


}


Result




复杂度分析



  • 时间复杂度:O(N)



??寻宝

总结

三个工作日收到了 offer,头条面试体验还是很棒的,这次的头条面试好像每面技术都问了我算法,然后就是中间件、MySQL、Redis、Kafka、网络等等。


  • 第一个是算法


关于算法,我觉得最好的是刷题,作死的刷的,多做多练习,加上自己的理解,还是比较容易拿下的。


而且,我貌似是将《算法刷题 LeetCode 中文版》、《算法的乐趣》大概都过了一遍,尤其是这本


**《算法刷题 Le


《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享


etCode 中文版》总共有 15 个章节:编程技巧、线性表、字符串、栈和队列、树、排序、查找、暴力枚举法、广度优先搜索、深度优先搜索、分治法、贪心法、动态规划、图、细节实现题**



《算法的乐趣》共有 23 个章节:




  • 第二个是 Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)


基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)



  • 第三个是网络(给大家看一本我之前得到的《JAVA 核心知识整理》包括 30 个章节分类,这本 283 页的 JAVA 核心知识整理还是很不错的,一次性总结了 30 个分享的大知识点)



本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

用户头像

MySQL神话

关注

还未添加个人签名 2021.11.12 加入

还未添加个人简介

评论

发布
暂无评论
【leetcode刷题】42,java软件开发工程师面试题目