Redian新闻
>
公婆家里被盗收到AP要回国,面试怎么办?
avatar
公婆家里被盗收到AP要回国,面试怎么办?# Immigration - 落地生根
r*7
1
做了一下Remove Duplicate Letters,中等难度
20%的接收率,自己也提交了5遍才过。网上搜搜发现还不是速度最快的解法
看来以后跳槽鸭梨很大啊
avatar
R*d
2
为公婆亲属移民申请交上三个月收到回美证,因为家里被盗,公婆急着回去,可是我们
是不是还得等面谈(或者免面谈通知啊)- 在收到这个通知以前是不是不要离境呢,谢
谢指导!
avatar
j*8
3
你这已然很牛了
我这题折腾了半天放弃了看别人的解法都看了半天才看懂。。

【在 r****7 的大作中提到】
: 做了一下Remove Duplicate Letters,中等难度
: 20%的接收率,自己也提交了5遍才过。网上搜搜发现还不是速度最快的解法
: 看来以后跳槽鸭梨很大啊

avatar
S*l
4
有回美证就可以回去,面试的时候再回来
avatar
r*7
5
看上去就是greedy,但是状态比较难定义

【在 j*****8 的大作中提到】
: 你这已然很牛了
: 我这题折腾了半天放弃了看别人的解法都看了半天才看懂。。

avatar
R*d
6
谢谢!那可以该面试时间吗?主要怕老人家事处理不完 再来行程太紧也累
谢谢

★ 发自iPhone App: ChineseWeb 7.8

【在 S***l 的大作中提到】
: 有回美证就可以回去,面试的时候再回来
avatar
y*e
7
想了下,这个题用greedy算法解。有点类似dijkstra算法求最短路径。
首先用一个priority queue来装已经发现的字符串,按照字典序排序。
比如输入是cbacdcbc,
scan到了第三个字符的时候,p_queue里面只有一个值 cba。
当scan到第四个字符c的时候,有了重复。这个时候有两个选择:
a. 把 c 从 cba 里面删除,变成 bac。
b. 不理会新遇到的 c,还是 cba。
把a选项和b选项再重新丢回p_queue。
如此重复一直到字符串结尾。返回p_queue的第一个值。因为p_queue是一个按照字典序
排好的priority queue,所以返回的结果一定就是答案。
伪代码如下:
let q = p_queue
for each c in string:
let s = q.empty() ? "" : q.dequeue()
if not c in s
s += c
q.push(s)
else:
s1 = del c in s
s1 += c
q.push(s)
q.push(s1)
return q.empty() ? "" : q.dequeue()
关键是第四行 if not c in s,还有第八行,del c in s,要选好data structure。用
一个linkedhashset可以实现O(1)的查询,删除和插入。p_queue没办法,只能是O(
nlogn)。
最终时间复杂度是O(nlogn),用掉O(n^2)的空间。。。
实现的代码:
string find_smallest_unique_string(const string& str) {
if (str.empty()) {
return "";
}
priority_queue q;
q.push("");
for (char c : str) {
unique_char_string s = q.dequeue();
if (s.find(c) == s.end()) {
q.append(c);
q.push(s);
} else {
q.push(s);
s.erase(c);
s.append(c);
q.push(s);
}
}
unique_char_string s = q.dequeue();
return string(s.begin(), s.end());
}
avatar
c*2
8
yes. they can ask for rescheduling at the local office.
avatar
r*g
9
这道题确实有意思,自己做不出来。。。。
avatar
R*d
10
谢谢 我给他们申请改期面试就行了吧 到时候他们拿AP回来入境应该没问题吧

★ 发自iPhone App: ChineseWeb 7.8

【在 c**2 的大作中提到】
: yes. they can ask for rescheduling at the local office.
avatar
l*3
11
给你个用stack的O(n)解法:
创立一个栈,最终栈内的元素从底到顶排起来就是所要的子字符串,这里直接用最终的
输出string t来表示这个栈,处理方法是:顺序扫描s的字符,如果当前字符没有在栈
中出现过,并且还比栈顶小,并且栈顶的字符在当前位置之后还有(也就是可以稍后再
添加),那么就把栈顶的字符扔掉,一会再加。
这是一个非常优雅的贪心法,其正确性并不显然,需要仔细琢磨琢磨。
c++ code 如下。注意,这里考虑了更general的情形,不仅限于 s 是由小写字母组成
的了。s实际上可以是任意字符处啊,以下code一样work, 时间复杂度还是 O(n)。
class Solution {
public:
string removeDuplicateLetters(string s) {
string t;
vector counts(256, 0);
for (char c : s) {
counts[c]++;
}
vector added(256, false);
for (char c : s) {
counts[c]--;
if (!added[c]) {
while (!t.empty() && counts[t.back()] > 0 && t.back() > c) {
added[t.back()] = false;
t.pop_back();
}
t.push_back(c);
added[c] = true;
}
}
return t;
}
};

【在 y*********e 的大作中提到】
: 想了下,这个题用greedy算法解。有点类似dijkstra算法求最短路径。
: 首先用一个priority queue来装已经发现的字符串,按照字典序排序。
: 比如输入是cbacdcbc,
: scan到了第三个字符的时候,p_queue里面只有一个值 cba。
: 当scan到第四个字符c的时候,有了重复。这个时候有两个选择:
: a. 把 c 从 cba 里面删除,变成 bac。
: b. 不理会新遇到的 c,还是 cba。
: 把a选项和b选项再重新丢回p_queue。
: 如此重复一直到字符串结尾。返回p_queue的第一个值。因为p_queue是一个按照字典序
: 排好的priority queue,所以返回的结果一定就是答案。

avatar
g*y
12
新题里面的flip game II竟然也只是medium
burst balloom好像刚出来是medium,过了几天调整成hard了。

【在 r****7 的大作中提到】
: 做了一下Remove Duplicate Letters,中等难度
: 20%的接收率,自己也提交了5遍才过。网上搜搜发现还不是速度最快的解法
: 看来以后跳槽鸭梨很大啊

avatar
l*3
13
感觉burst balloons确实不难,一道常规的dp题。
leetcode上好多和dp有关的题都是标的hard,但是其中很多思维方式都是类似的,掌握
了技巧后比较好做。
我倒是觉得有些medium的非常变态,比如最新的324, wiggle sort II,要求O(n)
time, in-place operation, O(1) extra space。这个非常狠。

【在 g*******y 的大作中提到】
: 新题里面的flip game II竟然也只是medium
: burst balloom好像刚出来是medium,过了几天调整成hard了。

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