boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 准备回来跟大家一起练习做题了
相关主题
L一个电面题
报个G的电面
T家电面面经并且不解为何被秒拒
LRU Cache, 请问, 如果我这样写,错误在哪里?为什么会time limit exceeded? 谢谢
how to query in the universal hash table?
hash_map 的遍历问题
看到一个题目
G家面筋。
问一道老题
amazon intern一共几面, 加面经
相关话题的讨论汇总
话题: int话题: hash话题: given话题: points话题: group
进入JobHunting版参与讨论
1 (共1页)
p*****2
发帖数: 21240
1
下个月的任务做的差不多了,先上一题。
一个平面里边有很多点,由(x,y)来表示。
如果两个点在水平一条线上,或者在垂直一条线上,则可以相连。但是绝对不能斜线相
连。
比如 (2,3) (2,5)可以相连, (2,3) (5,3) 可以相连, 但是(2,3) (4,5)则不能相连。
为了把两个不能相连的点连起来则需要另外多加一个点才能做到。比如加入(2,5)则可
以把(2,3) (4,5)相连。
现在有很多个点,问最少需要加入多少个点,使得可以把所有的点连在一起。
w****x
发帖数: 2483
2
靠, 这个月把下个月做的差不多了...
l*****a
发帖数: 14598
3
大牛我觉得你从未离开

连。

【在 p*****2 的大作中提到】
: 下个月的任务做的差不多了,先上一题。
: 一个平面里边有很多点,由(x,y)来表示。
: 如果两个点在水平一条线上,或者在垂直一条线上,则可以相连。但是绝对不能斜线相
: 连。
: 比如 (2,3) (2,5)可以相连, (2,3) (5,3) 可以相连, 但是(2,3) (4,5)则不能相连。
: 为了把两个不能相连的点连起来则需要另外多加一个点才能做到。比如加入(2,5)则可
: 以把(2,3) (4,5)相连。
: 现在有很多个点,问最少需要加入多少个点,使得可以把所有的点连在一起。

p*****2
发帖数: 21240
4

留点吧。不然下个月又得给加活了。这个月给加了不少。

【在 w****x 的大作中提到】
: 靠, 这个月把下个月做的差不多了...
p*****2
发帖数: 21240
5

我两个月没怎么做题,现在都没感觉了。

【在 l*****a 的大作中提到】
: 大牛我觉得你从未离开
:
: 连。

h****e
发帖数: 928
6
太羡慕了,还有时间做题。
l*****a
发帖数: 14598
7
二野标准的BSO方式你还没领会到?

【在 w****x 的大作中提到】
: 靠, 这个月把下个月做的差不多了...
A**l
发帖数: 2650
8
吐第一句话。。。
话说这题很简单吧,先横竖扫描去掉重复点,剩下n个点,需要n-1个点

连。

【在 p*****2 的大作中提到】
: 下个月的任务做的差不多了,先上一题。
: 一个平面里边有很多点,由(x,y)来表示。
: 如果两个点在水平一条线上,或者在垂直一条线上,则可以相连。但是绝对不能斜线相
: 连。
: 比如 (2,3) (2,5)可以相连, (2,3) (5,3) 可以相连, 但是(2,3) (4,5)则不能相连。
: 为了把两个不能相连的点连起来则需要另外多加一个点才能做到。比如加入(2,5)则可
: 以把(2,3) (4,5)相连。
: 现在有很多个点,问最少需要加入多少个点,使得可以把所有的点连在一起。

p*****2
发帖数: 21240
9

每个点都可以走到其他的任何点,连接以后。

【在 A**l 的大作中提到】
: 吐第一句话。。。
: 话说这题很简单吧,先横竖扫描去掉重复点,剩下n个点,需要n-1个点
:
: 连。

i***e
发帖数: 452
10
膜拜二爷!!牛的一塌糊涂啊
相关主题
LRU Cache, 请问, 如果我这样写,错误在哪里?为什么会time limit exceeded? 谢谢
how to query in the universal hash table?
hash_map 的遍历问题
看到一个题目
进入JobHunting版参与讨论
f*****e
发帖数: 2992
11
就是找n个联通分量,然后每个联通分量选个代表点连起来。

【在 A**l 的大作中提到】
: 吐第一句话。。。
: 话说这题很简单吧,先横竖扫描去掉重复点,剩下n个点,需要n-1个点
:
: 连。

l****c
发帖数: 782
12
My method is that to use two hash_table to store the point_x and point_y.
When we could not find any same value in x_table or y_table, counter++ and
save the new value; When there is at least one same value in either table,
we don't need add counter.
However, I wonder how to use unordered_table more beautiful. Please give me
some suggestion.
int minNumofPoint(vector> point){
unordered_map hash_given_points_x;
unordered_map hash_given_points_y;
hash_given_points_x[point[0][0]] = 0;
hash_given_points_y[point[0][1]] = 0;
int counter = 0;
unordered_map::iterator it1;
unordered_map::iterator it2;
for (int i = 1; i it1 = hash_given_points_x.find(point[i][0]);
it2 = hash_given_points_y.find(point[i][1]);
if (it1==hash_given_points_x.end()&&it2==hash_given_points_y.end()) {
counter++;
hash_given_points_x[point[i][0]] = 0;
hash_given_points_y[point[i][1]] = 0;
}
else if (it1==hash_given_points_x.end())
hash_given_points_x[point[i][0]] = 0;
else if (it2==hash_given_points_y.end())
hash_given_points_y[point[i][1]] = 0;
}
return counter;
}
p*****2
发帖数: 21240
13

me
不好意思,不太会看C++代码。感觉逻辑有点问题吗?
比如 (2,3) counter=0
(1,4) counter =1
(2,4) counter=1
但实际上,这个时候counter=0吧?

【在 l****c 的大作中提到】
: My method is that to use two hash_table to store the point_x and point_y.
: When we could not find any same value in x_table or y_table, counter++ and
: save the new value; When there is at least one same value in either table,
: we don't need add counter.
: However, I wonder how to use unordered_table more beautiful. Please give me
: some suggestion.
: int minNumofPoint(vector> point){
: unordered_map hash_given_points_x;
: unordered_map hash_given_points_y;
: hash_given_points_x[point[0][0]] = 0;

l****c
发帖数: 782
14
嗯,确实,之前第一次还想到这个问题,第二次给忘了。
再建一个hash for crossing point, 如果已经存在这个点counter--?

【在 p*****2 的大作中提到】
:
: me
: 不好意思,不太会看C++代码。感觉逻辑有点问题吗?
: 比如 (2,3) counter=0
: (1,4) counter =1
: (2,4) counter=1
: 但实际上,这个时候counter=0吧?

p*****2
发帖数: 21240
15

我是用dfs做的。

【在 l****c 的大作中提到】
: 嗯,确实,之前第一次还想到这个问题,第二次给忘了。
: 再建一个hash for crossing point, 如果已经存在这个点counter--?

l****c
发帖数: 782
16
能展开说一下吗?

【在 p*****2 的大作中提到】
:
: 我是用dfs做的。

p*****2
发帖数: 21240
17

void dfs(int[] x, int[] y, int[] g, int start, int group)
{
if(g[start]>0)
return;

g[start]=group;

for(int i=0;i if(x[i]==x[start] || y[i]==y[start])
dfs(x,y,g,i,group);
}
int[] x=new int[n];
int[] y=new int[n];

for(int i=0;i {
x[i]=in.nextInt();
y[i]=in.nextInt();
}

int[] g=new int[n];
int group=0;

for(int i=0;i if(g[i]==0)
{
group++;
dfs(x,y,g,i,group);
}

out.println(group-1);

【在 l****c 的大作中提到】
: 能展开说一下吗?
i***h
发帖数: 12655
18
这个应该是正解

【在 f*****e 的大作中提到】
: 就是找n个联通分量,然后每个联通分量选个代表点连起来。
l*********u
发帖数: 19053
19
俺不会算法哈。
先把x或y等值的点去掉,省下n个点,要加n/2个点。3.5算4个点。

连。

【在 p*****2 的大作中提到】
: 下个月的任务做的差不多了,先上一题。
: 一个平面里边有很多点,由(x,y)来表示。
: 如果两个点在水平一条线上,或者在垂直一条线上,则可以相连。但是绝对不能斜线相
: 连。
: 比如 (2,3) (2,5)可以相连, (2,3) (5,3) 可以相连, 但是(2,3) (4,5)则不能相连。
: 为了把两个不能相连的点连起来则需要另外多加一个点才能做到。比如加入(2,5)则可
: 以把(2,3) (4,5)相连。
: 现在有很多个点,问最少需要加入多少个点,使得可以把所有的点连在一起。

1 (共1页)
进入JobHunting版参与讨论
相关主题
amazon intern一共几面, 加面经
Leetcode上Two sum只能过3个case, VS能过,大牛进来看看是怎么回事
不改变排序的hash算法?
拓扑排序
写的LRU通不过大数据,帮忙看看
问一个c++ unordered_set的问题
问一个C++ set和unordered_set iterator的问题
WhatsApp 面经
Max Points on a Line 用c++map老是没法compile
请问pure storage 的那道map 数据结构题
相关话题的讨论汇总
话题: int话题: hash话题: given话题: points话题: group