G面经prepare: Straight Partition of A Deck of Cards
Define “Straight” as 5 cards with consecutive numbers. Determine if the deck can be fully divided into sets of “Straight”. Example: 1, 2, 3, 4, 4, 5, 5, 6, 7, 8 -> True
You may assume the cards are sorted
这个是用一个hashtable,key是数字,value是出现次数
然后遍历原数组,每一个数字都把hash里从自己开始往后5个color数都-1,如果发现缺数则说明不能分割
很容易错!
错了好多次,是color往后5个,如果不存在该color或者color数目已经为0,报错
1 package Straight; 2 import java.util.*; 3 4 public class Solution { 5 public boolean determine(int[] arr) { 6 HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); 7 for (int elem : arr) { 8 if (map.containsKey(elem)) { 9 map.put(elem, map.get(elem)+1); 10 } 11 else map.put(elem, 1); 12 } 13 14 for (int i=0; i<arr.length; i++) { 15 if(map.get(arr[i]) == 0) continue; 16 for (int j=arr[i]; j<arr[i]+5; j++) { 17 if (!map.containsKey(j)) return false; 18 if (map.get(j) == 0) return false; 19 else { 20 map.put(j, map.get(j)-1); 21 } 22 } 23 if (map.get(arr[i]) > 0) i--; 24 } 25 return true; 26 } 27 28 29 /** 30 * @param args 31 */ 32 public static void main(String[] args) { 33 // TODO Auto-generated method stub 34 Solution sol = new Solution(); 35 boolean res = sol.determine(new int[]{1,2,3,4,4,5,5,5,6,6,7,7,8,8,9}); 36 if (res) System.out.println("true"); 37 else System.out.println("false"); 38 } 39 40 }
分类:
面经
标签:
Array/String
, HashMap
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架