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,报错
package Straight;
import java.util.*; public class Solution {
public boolean determine(int[] arr) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int elem : arr) {
if (map.containsKey(elem)) {
map.put(elem, map.get(elem)+1);
}
else map.put(elem, 1);
} for (int i=0; i<arr.length; i++) {
if(map.get(arr[i]) == 0) continue;
for (int j=arr[i]; j<arr[i]+5; j++) {
if (!map.containsKey(j)) return false;
if (map.get(j) == 0) return false;
else {
map.put(j, map.get(j)-1);
}
}
if (map.get(arr[i]) > 0) i--;
}
return true;
} /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution sol = new Solution();
boolean res = sol.determine(new int[]{1,2,3,4,4,5,5,5,6,6,7,7,8,8,9});
if (res) System.out.println("true");
else System.out.println("false");
} }
G面经prepare: Straight Partition of A Deck of Cards的更多相关文章
- G面经prepare: Set Intersection && Set Difference
		求两个sorted数组的intersection e.g. [1,2,3,4,5],[2,4,6] 结果是[2,4] difference 类似merge, 分小于等于大于三种情况,然后时间O(m+n ... 
- G面经prepare: Reorder String to make duplicates not consecutive
		字符串重新排列,让里面不能有相同字母在一起.比如aaabbb非法的,要让它变成ababab.给一种即可 Greedy: 跟FB面经Prepare task Schedule II很像,记录每个char ... 
- G面经prepare: X-Straight
		Define “X-Straight” as X cards with consecutive numbers (X >= 3). Determine if the deck can be fu ... 
- G面经prepare: Maximum Subsequence in Another String's Order
		求string str1中含有string str2 order的 subsequence 的最小长度 DP做法:dp[i][j]定义为pattern对应到i位置,string对应到j位置时,shor ... 
- G面经prepare: Pattern Match
		设定一个pattern 把 'internationalization' 变成 'i18n', 比如word是house,pattern可以是h3e, 3se, 5, 1o1s1等, 给pattern ... 
- G面经prepare: Data Stream Average
		给一个datastream和一个fixed window size, 让我design一个class可以完成add number还有find average in the window. 就是不能用v ... 
- G面经prepare: Android Phone Unlock Pattern
		1 2 3 4 5 6 7 8 9 只有中间没有其他键的两个键才能相连,比如1可以连 2 4 5 6 8 但不能连 3 7 9 但是如果中间键被使用了,那就可以连,比如5已经被使用了,那1就可以连9 ... 
- G面经prepare: Jump Game Return to Original Place
		第二题 算法 给你一个arr 返回 T 或者 F arr的每个数代表从这个点开始跳几部,返回T的情况:从这个arr中任意一个数开始跳,可以在每个元素都跳到且只跳到一次的情况下返回到开始跳的元素 比如[ ... 
- G面经prepare: Sort String Based On Another
		Given a sorting order string, sort the input string based on the given sorting order string. Ex sort ... 
随机推荐
- Keepalived安装及初步使用
			一.基本规划VIP:192.168.1.11Master:192.168.1.105Backup:192.168.1.102二.安装主备分别安装keepalivedyum -y install kee ... 
- laravel 数据填充
			编写填充器 php artisan make:seeder UserTableSeeder 修改Laravel安装时自带的DatabaseSeeder类,添加一个数据库插入语句到run方法: < ... 
- 开班典礼-老师玩命的教,大家玩命的学,沉静,18K
			接下来的四个月决定我的命运,三年前决定现在,现在决定三年后.喜讯,双元安卓四期,1368$,到第二期仍然不成熟,打分意见多写, 孙健:15011386618 喊出你 的目标.自己监督不了自己,别人可能 ... 
- Machine Learning in Action -- FP-growth
			要解决的问题,频繁项集 最暴力的方法,就是遍历所有的项集组合,当然计算量过大 最典型的算法apriori, 算法核心思想,当一个集合不是频繁项集,那么它的超集也一定不是频繁项集 这个结论是很明显的,基 ... 
- day12
			JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件的最上方 ... 
- 【翻译】How To Tango With Django 1.5.4 第一章
			1.概览 这本书的目的就是为了给你提供Django实战开发的指导,这本书主要是为学生设计的,它提供了开发并运行第一个web应用程序的详细的指导步骤,并且指导你怎么将它发布到web服务器上. 本书就是为 ... 
- iOS Provisioning Profile(Certificate)与Code Signing详解
			引言 关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做 iOS 开发的同学没少被折腾.对于一个 iOS ... 
- java 发送http json请求
			public void getRemoteId(HttpServletRequest request,Model model){ String name = request.getParameter( ... 
- Magento添加一个下拉登陆菜单Create Magento Dropdown Login in a few minutes
			Dropdown login forms are not a feature many online stores use, but in some cases they could be quite ... 
- get 与 post
			<form action="Default.aspx" method="get"> get 服务器端 用request.querystring来获 ... 
