由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 发道面试题求大牛帮解答
相关主题
SGU好啊。。。请教一个面试题
发道题吧Facebook Hacker Cup
bb家电面分享面试题
leetcode出了新题word ladder求高手解答cs 面试题?
find first nonduplicate unicode questions一道面试题
Leetcode Word Break I 有o(n^2)的算法吗?有些面试题是够扯蛋的
请教一道G题的代码量[面试题求教]remove common phrases from each sentence
让大家了解工业界Java/J2EE面试题的难度请教一个 Set 的Java面试题
相关话题的讨论汇总
话题: complement话题: dominos话题: 数字话题: pr话题: 多米诺骨牌
进入JobHunting版参与讨论
1 (共1页)
x*****o
发帖数: 33
1
Find the complement domino pairs.
多米诺骨牌由2个数字构成,每个数字可以是0-6. 给定an array of Dominos, find if
there are two complement dominos. Complement dominos是说两个多米诺骨牌a和b
。a的上半部分的数字和b的上半部分的数字相加是6,a的下半部分的数字和b的下半部
分的数字相加也是6。多米诺骨牌可以翻转。
举个例子,
+----+ +----+
| x | | x x |
| x x | | x x |
+----+ +----+
| x | | x |
| x | | x x |
+----+ +----+
是complement dominos,
+----+ +----+
| x x | | |
| x x | | |
+----+ +----+
| x | |x x x |
| x | |x x x |
+----+ +----+
以上每一个和自身都是complementory,但是在上面的题中,IFF array里面有2个一样
的才算。
请大牛赐教用什么data structure表示domino,然后怎么找complement。多谢啦!!
j*****8
发帖数: 3635
2
第一个例子右边的牌上下是不是颠倒了?
x*****o
发帖数: 33
3
多米诺骨牌可以翻转的,所以2-4和 4-2 其实是一样的。我是故意翻过来来说明这个。

【在 j*****8 的大作中提到】
: 第一个例子右边的牌上下是不是颠倒了?
t*********h
发帖数: 941
4
没太看明白 就是找两个元素 一个元素的一对和另一个的一对数字配对 加起来都是6就
行了?

if
b

【在 x*****o 的大作中提到】
: Find the complement domino pairs.
: 多米诺骨牌由2个数字构成,每个数字可以是0-6. 给定an array of Dominos, find if
: there are two complement dominos. Complement dominos是说两个多米诺骨牌a和b
: 。a的上半部分的数字和b的上半部分的数字相加是6,a的下半部分的数字和b的下半部
: 分的数字相加也是6。多米诺骨牌可以翻转。
: 举个例子,
: +----+ +----+
: | x | | x x |
: | x x | | x x |
: +----+ +----+

x*****o
发帖数: 33
5
请看这个:
http://www.amazon.com/Double-Professional-Dominoes-Spinner-Wood
就是给一个array of 这个,找是否存在两张,使得上,下的和分别是6.

【在 t*********h 的大作中提到】
: 没太看明白 就是找两个元素 一个元素的一对和另一个的一对数字配对 加起来都是6就
: 行了?
:
: if
: b

s******t
发帖数: 229
6

穷举吧。。数字也没有规律,面试考这个有什么意义

【在 t*********h 的大作中提到】
: 没太看明白 就是找两个元素 一个元素的一对和另一个的一对数字配对 加起来都是6就
: 行了?
:
: if
: b

l*********8
发帖数: 4642
7
觉得是two-sum变种

if
b

【在 x*****o 的大作中提到】
: Find the complement domino pairs.
: 多米诺骨牌由2个数字构成,每个数字可以是0-6. 给定an array of Dominos, find if
: there are two complement dominos. Complement dominos是说两个多米诺骨牌a和b
: 。a的上半部分的数字和b的上半部分的数字相加是6,a的下半部分的数字和b的下半部
: 分的数字相加也是6。多米诺骨牌可以翻转。
: 举个例子,
: +----+ +----+
: | x | | x x |
: | x x | | x x |
: +----+ +----+

b***e
发帖数: 1419
8
这还sum个啥,直接hashmap, 一共就36种情况。

【在 l*********8 的大作中提到】
: 觉得是two-sum变种
:
: if
: b

l*********8
发帖数: 4642
9
同意你的解法。
对于unsorted array的two-sum, 一种解法就是用hashmap.
PS. 对于本题,如不考虑上下颠倒的重复,最多有7*7=49可能性。

【在 b***e 的大作中提到】
: 这还sum个啥,直接hashmap, 一共就36种情况。
t*****a
发帖数: 106
10
Struct Card
{
int ID;
int up;
int bottom;
}
card上下颠倒了,ID不变,然后Hashmap扫一遍就行了,用ID判断是不是self-comp
相关主题
Leetcode Word Break I 有o(n^2)的算法吗?请教一个面试题
请教一道G题的代码量Facebook Hacker Cup
让大家了解工业界Java/J2EE面试题的难度分享面试题
进入JobHunting版参与讨论
x*****o
发帖数: 33
11
能详细说说嘛?key和value各是什么呢?

【在 l*********8 的大作中提到】
: 同意你的解法。
: 对于unsorted array的two-sum, 一种解法就是用hashmap.
: PS. 对于本题,如不考虑上下颠倒的重复,最多有7*7=49可能性。

t*****a
发帖数: 106
12

我也想知道有没有啥好的structure.我想的是
unordered_map>;
int key只存up的value就行了。找到up匹配的再判断bottom是否匹配。

【在 x*****o 的大作中提到】
: 能详细说说嘛?key和value各是什么呢?
l*********8
发帖数: 4642
13
我觉得用hashset就可以了, key就是一个多米诺牌。

【在 x*****o 的大作中提到】
: 能详细说说嘛?key和value各是什么呢?
b***e
发帖数: 1419
14
哎,又算错了,是49个。two-sum也是对的。

【在 l*********8 的大作中提到】
: 同意你的解法。
: 对于unsorted array的two-sum, 一种解法就是用hashmap.
: PS. 对于本题,如不考虑上下颠倒的重复,最多有7*7=49可能性。

x*****o
发帖数: 33
15
可是这样的话,要先sort一下吗?不然如果有2个2-4这种是找不到的啊。。。还是每次
匹配up都要匹配一下down?
能具体说说匹配过程吗?

【在 t*****a 的大作中提到】
:
: 我也想知道有没有啥好的structure.我想的是
: unordered_map>;
: int key只存up的value就行了。找到up匹配的再判断bottom是否匹配。

x*****o
发帖数: 33
16
想不太明白用set怎么做。。能具体说说过程吗?

【在 l*********8 的大作中提到】
: 我觉得用hashset就可以了, key就是一个多米诺牌。
z*********e
发帖数: 10149
17
你每次找到一个骨牌,可以把他的complementary加到hashset里面,然后拿到新的骨牌
就看在不在这个hashset里,如果在就找到了,如果没有,那就把新的骨牌的
complementary也push到hashset里面去。这个set可以加个限定条件,比如上面的数字
小于等于下面的数字
就是two sum的做法吧

【在 x*****o 的大作中提到】
: 想不太明白用set怎么做。。能具体说说过程吗?
t*****a
发帖数: 106
18

首先你要把每个骨牌做一个copy, id一样,但上下颠倒。你说的两个2-4最后是两个2-4
,两个4-2的copy,但ID只有两个。不用sort啊,你拿到一个up,直接找对应的(6-up)的
hash item,然后再匹配down就行了。要是再想快就建立成unordered_map unordered_map>,不过感觉没必要。
直接用unordered_set好一些

【在 x*****o 的大作中提到】
: 可是这样的话,要先sort一下吗?不然如果有2个2-4这种是找不到的啊。。。还是每次
: 匹配up都要匹配一下down?
: 能具体说说匹配过程吗?

f**********t
发帖数: 1001
19
vector> dominos;
unordered_map> seen;
for (auto pr : dominos) {
if (seen.find(6 - pr->first) != seen.end() &&
seen[6 - pr->first].find(6 - pr->second) != seen[6 - pr->first].end() ||
seen.find(6 - pr->second) != seen.end() &&
seen[6 - pr->second].find(6 - pr->first) != seen[6 - pr->second].end())
{
return true;
}//if
seen[pr->second].insert(pr->first);
seen[pr->first].insert(pr->second);
}

if
b

【在 x*****o 的大作中提到】
: Find the complement domino pairs.
: 多米诺骨牌由2个数字构成,每个数字可以是0-6. 给定an array of Dominos, find if
: there are two complement dominos. Complement dominos是说两个多米诺骨牌a和b
: 。a的上半部分的数字和b的上半部分的数字相加是6,a的下半部分的数字和b的下半部
: 分的数字相加也是6。多米诺骨牌可以翻转。
: 举个例子,
: +----+ +----+
: | x | | x x |
: | x x | | x x |
: +----+ +----+

n**s
发帖数: 2230
20
就是简单的hashset。
用0-6作为key,0和6, 1和5,2和4,3和3配对即可
1 (共1页)
进入JobHunting版参与讨论
相关主题
请教一个 Set 的Java面试题find first nonduplicate unicode questions
问一道面试题Leetcode Word Break I 有o(n^2)的算法吗?
面试题求解:remove first duplicate number from an array请教一道G题的代码量
求教一个dropbox面试题让大家了解工业界Java/J2EE面试题的难度
SGU好啊。。。请教一个面试题
发道题吧Facebook Hacker Cup
bb家电面分享面试题
leetcode出了新题word ladder求高手解答cs 面试题?
相关话题的讨论汇总
话题: complement话题: dominos话题: 数字话题: pr话题: 多米诺骨牌