avatar
一道Coding面试题目# JobHunting - 待字闺中
g*7
1
找购买物品相关的物品,返回最长相关List。如果有一样长的,返回字典最小的一个。
Test case1:
[test1, test2]
[test3, test4]
==> [test1, test2]
Test case2:
[test1, test2]
[test3, test4]
[test4, test5]
==> [test3, test4, test5]
请教有没有比较好简洁的解法?
avatar
s*z
2
可能没理解题 直接bfs不可以吗
avatar
r*l
3
看这些例子O(N)可解
俩字典,test1:([test1,test2])
Test2:([test1,test2]),value是同一个list/linkedlist
每加一个Link,看能不能和原来的连起来。其实就是
没法连,连一个,连两个三种情况
while loop就好。连起来的话两个字典要同步更新
每一步还要更新最长List
如果同一个Node可能指向不同的node,就麻烦得多
遍历有向图?
avatar
l*0
4
建立无向图,dfs
avatar
l*z
5
O(N)能搞定
用两个hashmap, 一个存物品:集ID,一个是集ID:counter。扫描一遍更新即可

【在 g*******7 的大作中提到】
: 找购买物品相关的物品,返回最长相关List。如果有一样长的,返回字典最小的一个。
: Test case1:
: [test1, test2]
: [test3, test4]
: ==> [test1, test2]
: Test case2:
: [test1, test2]
: [test3, test4]
: [test4, test5]
: ==> [test3, test4, test5]

avatar
o*r
6
class Pair {
Pair(String s, String e) {
_1 = s;
_2 = e;
}
public int hashCode() {
return _1.hashCode() | _2.hashCode();
}
public boolean equals(Object obj) {
if (obj == null) return false;
else {
if (obj instanceof Pair) {
Pair pair = (Pair)obj;
return _1.equals(pair._1) && _2.equals(pair._2);
} else {
return false;
}
}
}
String _1;
String _2;
}
public class Solution {
public List longest(Pair[] input) {
// 如果输入已经排序, O(N), 否则O(NlgN).
Arrays.sort(input, new Comparator(){
public int compare(Pair i1, Pair i2) {
if (!i1._1.equals(i2._1)) return i1._1.compareTo(i2._1);
else return i1._2.compareTo(i2._2);
}
});
int start = 0;
int len = 0;
int index = 0;
for (int i = 1; i < input.length; i++) {
if (input[i - 1]._2.equals(input[i]._1)) continue;
else {
if (i - index > len) {
len = i - index;
start = index;
}
index = i;
}
}
if (input.length - index > len) {
len = input.length - index;
start = index;
}
List ret = new LinkedList<>();
for (int i = start; i < start + len; i++) {
if (ret.isEmpty()) {
ret.add(input[i]._1);
ret.add(input[i]._2);
} else {
ret.add(input[i]._2);
}
}
return ret;
}
}
avatar
g*7
7
vector Longest(vector> items) {
}
For test case 1, need to sort the same len and return one in the
lexicographical order.
For test case 2, need to merge different pairs into large vector list.
It is not easy to resolve it with bug free during main shi if did not see
this question before.
Wonder some similar TIMU for this case?
avatar
n*p
8
Union find
avatar
o*r
9
靠谱。

【在 n**p 的大作中提到】
: Union find
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。