U*****R 发帖数: 60 | 1 昨天和Yelp打了个电话。
对方先问了简历上的东西和项目,接着是一些常见technical小问题
1)从打www.google.com到你看到网页发生了什么
2)process和thread区别是什么,fork做了什么,父进程和子进程的代码一样否
3)mysql query很慢的时候需要做什么,我说explain;又问index好为什么不给每个
column都建一个index
接着一道coding题目
Find the longest substring with non-repeating characters.
for example: ""->0, "a"->1, "aaa"->1, "baabababa"->2, "abcda"->4
面试官没有说要给出time complexity和space complexity上的限制,我就假设这些都
是越少越好。
[更新]此题已解,做法参照http://www.leetcode.com/2011/05/longest-substring-without-repeating-characters.html
请大牛指点一下这道题!!
我的解... 阅读全帖 |
|
e***n 发帖数: 42 | 2 搞定.用了multimap 和两个iterator.
#include |
|
S*******e 发帖数: 379 | 3 想试一下insert interval的online judge,结果出现
Run Status: Runtime Error
没有具体的错误信息,这种情况是不是说明程序core dump了,而不是test case
failure? 好像没法debug啊。
程序在下面。
class Solution {
public:
vector insert(vector &intervals, Interval
newInterval) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int start, end;
vector::iterator it = intervals.begin();
while (newInterval.start > it->start && newInterval.star... 阅读全帖 |
|
S*******e 发帖数: 379 | 4 啊,确实犯了这个低级错误,多谢人工debug!
不过我把end() check 挪到了前面还是runtime error啊
改过的程序如下:
class Solution {
public:
vector insert(vector &intervals, Interval
newInterval) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int start, end;
vector::iterator it = intervals.begin();
while (it != intervals.end() && newInterval.start > it->start &&
newInterval.start > it->end) {
++ it;
}... 阅读全帖 |
|
h****n 发帖数: 1093 | 5 来自主题: JobHunting版 - 贡献一道题 写了一个,没测,楼主测测有问题告诉我
bool isWord(string s)
{
if(s=="this") return true;
if(s=="is") return true;
if(s=="desk") return true;
if(s=="top") return true;
if(s=="desktop") return true;
return false;
}
void Helper(string &inputS, int start, string &tmpStr, vector &res)
{
if(start == inputS.size())
{
//删除多余的空格
tmpStr.erase(tmpStr.end()-1);
res.push_back(tmpStr);
//补回来以便正确的backtracking
tmpStr.push_back(' ');
return;
}
int i;
stri... 阅读全帖 |
|
l*******b 发帖数: 2586 | 6 记得前几天有大侠贴过一个的,找不到了
被面到了,讲完思路画了下流程,code写了一半时间到了,一直很糊涂该怎么写图的数
据结构。补一个code吧
#include
#include
#include
#include
using namespace std;
typedef unordered_map > Graph;
vector topologicalSort(Graph &gr) { // destructive
vector sorted;
queue degree_zero;
while(!gr.empty()) {
for(Graph::iterator i = gr.begin(), j = i; i != gr.end(); i = j) {
j++;
if(i->second.empty()) {
... 阅读全帖 |
|
b*****n 发帖数: 143 | 7 My C++ implementation:
#include
#include
#include |
|
s*******y 发帖数: 338 | 8 改两行:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int N = s.size();
if (N <= 1) return N;
int i = 0, j = 0;
unordered_set dict; // table
int maxLen = 0;
while (j < N) {
if (dict.find(s[j]) != dict.end()) { //find duplicate
maxLen = max(maxLen, j-i);
while(s[i]!=s[j]) dict.erase(s[i++]);
dict.erase(s[i++]);
} else {
dict.insert(s[j]);
++j;
}
}
maxLen = max(maxLen, j-i);
retur... 阅读全帖 |
|
k*******t 发帖数: 144 | 9 class Solution {
public:
int longestConsecutive(vector &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
unordered_map mapping;
for(int i = 0; i < num.size(); ++i)
{
mapping[num[i]] = true;
}
int longest = 0;
for(int i = 0; i < num.size(); ++i)
{
int len = 0;
int cur = num[i];
while(mapping.find(cur) != mapping.end... 阅读全帖 |
|
p****n 发帖数: 69 | 10 http://en.cppreference.com/w/cpp/container/priority_queue
default确实是vector
pq.push is equivalent to vec.push_back,then call ascend method to put it in
the correct position
for pq.erase, first swap vec.front() and vec.back(), then erase vec.back()
and call descend method to put vec.front() to the correct position. |
|
j********r 发帖数: 25 | 11 没有时间看你的是什么问题, 你参考一下如下程序吧:
int ladderLength(string start, string end, unordered_set &dict) {
int remaining = 1;
queue qou;
qou.push(start);
dict.erase(start);
int depth = 0;
while(qou.size() > 0) {
depth++;
int nextLevel = 0;
while(remaining >0) {
string s = qou.front();
qou.pop();
if (s == end) { return depth;}
... 阅读全帖 |
|
r*******n 发帖数: 3020 | 12 Best Time to Buy and Sell Stock III
int maxProfit(vector &prices) {
int sum =0;
int max_profit;
int times=2;
while(prices.size()>1 && times-->0){
int buy=0;
int sell=0;
max_profit=0;
for(int i=1; i
if(prices[buy]>prices[i]){
buy=i;
}
int cur_diff = prices[i]-prices[buy];
if(cur_diff>max_profit){
... 阅读全帖 |
|
w*******e 发帖数: 395 | 13 这道题目非常复杂,首先能想到n*log(n)的算法就不简单,即使想到了,能够在面试的
压力下把逻辑coding出来也非常的难。我感觉电面中,问到这种题目而且要coding的,
如果从没有见过,基本就是不让你过。感觉这种题目适合onsite用。
在知道算法后,我大概花了一些时间,写了如下的代码,基本思路就是楼上讨论的。
1. 首先把所有的interval的起点和终点存进一个vector,并且sort
struct timePoint {
int point;
bool startORend;
int vol;
timePoint(int p, bool s, int v): point(p), startORend(s), vol(v) {}
};
2. 建立一个multiset用来存储还没有结束的volume,同时可以用来判断某个时间段是
否被输入的interval cover了。
3. 然后扫描vector开始建立输出的vector:
1)如果碰到start的点,先检查multiset是否为空,如果是,就是i... 阅读全帖 |
|
w*******e 发帖数: 395 | 14 这道题目非常复杂,首先能想到n*log(n)的算法就不简单,即使想到了,能够在面试的
压力下把逻辑coding出来也非常的难。我感觉电面中,问到这种题目而且要coding的,
如果从没有见过,基本就是不让你过。感觉这种题目适合onsite用。
在知道算法后,我大概花了一些时间,写了如下的代码,基本思路就是楼上讨论的。
1. 首先把所有的interval的起点和终点存进一个vector,并且sort
struct timePoint {
int point;
bool startORend;
int vol;
timePoint(int p, bool s, int v): point(p), startORend(s), vol(v) {}
};
2. 建立一个multiset用来存储还没有结束的volume,同时可以用来判断某个时间段是
否被输入的interval cover了。
3. 然后扫描vector开始建立输出的vector:
1)如果碰到start的点,先检查multiset是否为空,如果是,就是i... 阅读全帖 |
|
w**s 发帖数: 339 | 15 你删除hash table里面的成员应该是 hash_.erase(tail_->key_) 不应该hash_.erase(
tail_->value_) |
|
s********x 发帖数: 914 | 16 ls的binary search还是有可以improve的地方,因为在hit到某个interval时search就
可以停止了,效率更高。我贴一些我的代码吧。思路是跟ls一样的。谢谢ls的代码。
public ArrayList insert(ArrayList intervals,
Interval newInterval) {
int n = intervals.size();
if (n==0) {
intervals.add(newInterval);
return intervals;
}
int first = -1, last = -1; // first and last interval to be merged/
erased
int l = 0, r = n - 1;
// BSearch to find the 'first' interval whose end >= ne... 阅读全帖 |
|
s********x 发帖数: 914 | 17 ls的binary search还是有可以improve的地方,因为在hit到某个interval时search就
可以停止了,效率更高。我贴一些我的代码吧。思路是跟ls一样的。谢谢ls的代码。
public ArrayList insert(ArrayList intervals,
Interval newInterval) {
int n = intervals.size();
if (n==0) {
intervals.add(newInterval);
return intervals;
}
int first = -1, last = -1; // first and last interval to be merged/
erased
int l = 0, r = n - 1;
// BSearch to find the 'first' interval whose end >= ne... 阅读全帖 |
|
g*********e 发帖数: 14401 | 18 class Solution {
public:
void reverseWords(string &s) {
for(int i=0; i
if(s[i]==' ') {
if(i>0 && s[i-1]==' ' || i==0)
s.erase(i--, 1);
}
}
if(s[s.length()-1] == ' ')
s.erase(s.length()-1, 1);
reverse(s.begin(), s.end());
int st=0, end=0;
while(end
if(s[end] == ' '){
reverse(s.begin()+st, s.begin()+end);
... 阅读全帖 |
|
l******o 发帖数: 144 | 19 不用60行。43行我这个(没编译没跑没测,如果错误请见谅)
vector f(const vector& vs) {
map> edges;
unordered_set out_vertices;
for (size_t i = 0; i + 1 < vs.size(); i++) {
const auto& s1 = vs[i];
const auto& s2 = vs[i + 1];
size_t j;
for (j = 0; j < s1.size() && j < s2.size(); j++) {
if (s1[j] != s2[j]) {
edges[s1[j]].insert(s2[j]);
break;
}
}
if (j == s2.size() && j < s1.size()) throw runtime_error();
for (char c ... 阅读全帖 |
|
s******i 发帖数: 236 | 20 https://www.hackerrank.com/challenges/unfriendly-numbers
There is one friendly number and N unfriendly numbers. We want to find how
many numbers are there which exactly divide the friendly number, but does
not divide any of the unfriendly numbers.
Input Format:
The first line of input contains two numbers N and K seperated by spaces. N
is the number of unfriendly numbers, K is the friendly number.
The second line of input contains N space separated unfriendly numbers.
Output Format:
Output the a... 阅读全帖 |
|
l*********8 发帖数: 4642 | 21 倒数第6行:
divisors.erase(*it1) 改成
divisors.erase(*it2)
就行了。
我试过了,可以通过。
N |
|
U***A 发帖数: 849 | 22 这个怎么样?
/*
merege interals
*/
void mergeIntervals(vector &vp, Pair np){
int size = (int)vp.size();
if(size == 0) {
vp.push_back(np);
return;
}
for(vector::iterator it = vp.begin(); it != vp.end();){
if(np.first > it->second || np.second < it->first){
it++;
}
else if(np.first > it->first && np.second < it->second){
return;
}
else if(np.first <= it->first && np.second >= it->second){
... 阅读全帖 |
|
j*****p 发帖数: 41 | 23 vector insert(vector &intervals, Interval newInterval) {
int size = (int) intervals.size();
if (size == 0) {
intervals.push_back(newInterval);
return intervals;
}
for (vector::iterator it = intervals.begin(); it != intervals.
end();) {
if (newInterval.start > it->end || newInterval.end < it->start) {
it++;
} else if (newInterval.start > it->start && newInterval.end < it->
end) {
return intervals... 阅读全帖 |
|
U***A 发帖数: 849 | 24 那是因为lc是排序的。所有最后应该找合适的位置插入newInterval.
这个可以
vector insert(vector &intervals, Interval
newInterval) {
int size = (int) intervals.size();
if (size == 0) {
intervals.push_back(newInterval);
return intervals;
}
for (vector::iterator it = intervals.begin(); it != intervals.
end();) {
if (newInterval.start > it->end || newInterval.end < it->start) {
it++;
} else if (newInterval.start > it->start &... 阅读全帖 |
|
l*****7 发帖数: 55 | 25 vector 的 erase()复杂度是O(n)啊,岂不费时?最坏就O(n^2)了。设想新的区间包含
所有已知区间。
在erase那里可以考虑把最后一个区间swap过来;或者在线partition,最后删除重合的
区间就行了。 |
|
a***e 发帖数: 413 | 26 写了很久都过不了,15分钟哪里能写完啊?能把思路说清楚就不错了。不知道什么样的
公司和面试官会出这种题。
https://oj.leetcode.com/problems/word-ladder-ii/
vector> findLadders(string start, string end, unordered_set<
string> &dict) {
vector> res;
vector> empty;
queue curLevel;
queue nextLevel;
vector path;
path.push_back(start);
curLevel.push(start);
res.push_back(path);
string word = start;
bool find = false;
int n = word.size();
bo... 阅读全帖 |
|
a***e 发帖数: 413 | 27 写了很久都过不了,15分钟哪里能写完啊?能把思路说清楚就不错了。不知道什么样的
公司和面试官会出这种题。
https://oj.leetcode.com/problems/word-ladder-ii/
vector> findLadders(string start, string end, unordered_set<
string> &dict) {
vector> res;
vector> empty;
queue curLevel;
queue nextLevel;
vector path;
path.push_back(start);
curLevel.push(start);
res.push_back(path);
string word = start;
bool find = false;
int n = word.size();
bo... 阅读全帖 |
|
w*****d 发帖数: 105 | 28 个人浅见,C++风格的伪码:
mutex m;
condition hc, oc;
set hq, oq;
H() {
m.lock();
hq.insert(pthread_self());
if(hq.size() > 1 && !oq.empty()){
hc.signal();
hc.signal();
oc.signal();
}
hc.wait(&m);
hq.erase(pthread_self());
m.unlock();
}
O() {
m.lock();
oq.insert(pthread_self());
if(hq.size() > 1 && !oq.empty()){
hc.signal();
hc.signal();
oc.signal();
}
oc.wait(&m);
oq.erase(pthread_self());
m.u... 阅读全帖 |
|
w*****d 发帖数: 105 | 29 经过实测,上面的代码有点问题:pthread里如果没有线程wait,条件变量signal是没
有任何效果的。
下面的代码是测试通过的C++代码:
CMutex m;
CCondition hc, oc;
set hq, oq;
void * H(void * arg) {
bool w = true;
m.lock();
cout<<"generate H in "<
hq.insert(pthread_self());
if(hq.size() > 1 && !oq.empty()){
hc.signal();
w = (hq.size() > 2);
if(w)
hc.signal();
oc.signal();
}
if(w)
hc.wait(m);
hq.erase(pthread_self());
cout<<"consume H in ... 阅读全帖 |
|
i******t 发帖数: 22541 | 30 感觉挺简单的啊 和 oj答案不一样 哪位帮看看啊
class Solution {
public:
int lengthOfLongestSubstring(string s) {
map mp;
int max_len =0;
int n=s.size();
int j =0;
for(int i=0;i
{
char c = s.at(i);
if( mp.find(c)!=mp.end() ) // found
{
int len = i-j;
if(len>max_len)
{
max_len = len;
}
int jj = mp[c];
... 阅读全帖 |
|
k*******e 发帖数: 24 | 31 class Solution {
public:
string DeleteDigits(string A, int k) {
while (k > 0) {
for (int i = 0; i < A.size(); i++) {
if (i == A.size() - 1 || A[i] > Aij+1]) {
A.erase(i, 1);
break;
}
}
k--;
}
auto it = A.begin();
while (*it == '0')
it = A.erase(it);
return A;
}
}; |
|
k*******e 发帖数: 24 | 32 class Solution {
public:
string DeleteDigits(string A, int k) {
while (k > 0) {
for (int i = 0; i < A.size(); i++) {
if (i == A.size() - 1 || A[i] > Aij+1]) {
A.erase(i, 1);
break;
}
}
k--;
}
auto it = A.begin();
while (*it == '0')
it = A.erase(it);
return A;
}
}; |
|
b******i 发帖数: 914 | 33 拿数字那题写了个巨复杂的code,肯定不是最简单的,也不一定对,欢迎提意见
class Solution {
public:
bool canIWin(int n, int target) {
// assume we choose from 1 to n, target is a positive integer
if(n >= target)
return true;
unordered_set used;
return first_win_helper(n, used, target);
}
bool first_win_helper(int n, unordered_set &used, int target) {
// return true if the first player will be guaranteed to win
if(used.size() == n)
... 阅读全帖 |
|
r****7 发帖数: 2282 | 34 可以pass所有的test cases,不知道是不是显得比较初级,本人C++比较普通,谢谢指
教!
class LRUCache{
public:
typedef map::iterator> > KVType;
LRUCache(int capacity) {
mCapacity = capacity;
}
int get(int key) {
KVType::iterator it = mKeyValuePair.find(key);
if (it == mKeyValuePair.end()) {
return -1;
}
int result = it->second.first;
list::iterator keysIt = it->second.second;
mKeys.erase(keysIt);
mKeys.push_... 阅读全帖 |
|
e***i 发帖数: 231 | 35 looks good! my 2cents in comments:
class LRUCache{ // maybe it's better to be templated key instead of 'int'?
public:
typedef map::iterator> > KVType; // map O(lgn)
vs unordered_map O(n) ??
LRUCache(int capacity) {
mCapacity = capacity;
}
int get(int key) {
KVType::iterator it = mKeyValuePair.find(key); //auto it = ...
if (it == mKeyValuePair.end()) {
return -1;
}
int result = it->second.first;
... 阅读全帖 |
|
s*********t 发帖数: 36 | 36 用 set (set is BST) 做
count array is [0, 1, 2, 1, 0]
1. base array is iset = [1, 2,, 3, 4, 5]
4th count = 0 -> (4-0) = 4th largest
4th val = iset.begin()+ 4 = 5
iset.erase(5)
2. array -> 1, 2, 3, 4
3rd count -> (3-1) =2nd largest
3rd val = iset.begin()+2 =3
iset.erase(3)
result: original array = 4 2 1 3 5
O(nlogn) |
|
b**********5 发帖数: 7881 | 37 seems to me that it's not that u cannot write all lives matter, it's that u
cannot erase black lives matter...
FB worker can confirm whether other writings can be erased or not... |
|
b********6 发帖数: 35437 | 38 #include
#include
#include
#include
using namespace std;
vector invite(unordered_map>friends)
{
//this queue is used to store the people who would not be invited
queuekickOut;
//find people with less then 5 friends
for(auto & e : friends)
if(e.second.size() < 5)
kickOut.push(e.first);
//kickOut people, update other people's firend list,
//add people to kickOut queue if the ... 阅读全帖 |
|
|
|
|
|
|
a*****0 发帖数: 3319 | 44 Magic eraser really helps. I used magic eraser to clean all the pencil and
crayon marks my son made, and then painted with primer first, then white
paint. |
|
|
D******r 发帖数: 5237 | 46 你说的这几个,easy off, magic eraser,我都试过。各有各的适用范围,
对于擦很久没擦过的灶台,还是SOS最好使。Easy off只能对付油渍。那种烧
焦掉一块很硬的污迹,easy off是比较难的,但是sos能轻松擦掉。至于magic
eraser,不很合适金属灶台用,它是橡皮一样靠牺牲自己磨掉污渍的,适合擦墙和
柜子台面 |
|
h***z 发帖数: 5043 | 47 回来试了一下easy off对焦掉一块很硬的污迹也很快,只要不是长时间不清理都很快
我用sos好像不太顺手,不过也就3块钱不到,无所谓了
我还是喜欢easy off,可能大家top的材质不一样
今天我仔细看了一下我的用magic eraser也没有出现划伤,对了,magic eraser 在
costco也有卖的,
如果妹妹的cooktop和Dreamer妹妹一样,估计最好还是买SOS |
|
|
i***e 发帖数: 9429 | 49 借这贴我还要爆个暖气修理贴,这个是二月末的 Furnace求助贴,前后经历了大半年,
N 次的emails 来回,投入的时间大家可以想像。而那位同学最后拒绝把检测过程贴回
班上。违背了当时的承诺。当时这位同学还特别说到 ”我想还是贴出来大家可以参考
一下比较有意义“。 但是最后的回复让我无语。你花的时间和精力是应该的,而你根
本没有感受到我投入的时间和精力。你说你花了很多钱,你花了多少钱? 这钱又不是给
我的。 在开始前我事先有提醒过你,问题只有一个,一要有耐心,二可能会花点小钱。
现在帮你彻底问题检查出来,你居然这样对我说。如果要知道你不会贴回班上,我是肯
定不会帮你的。我要的是大家一起受益。
在四月底我的一个情绪反映,现在回想起,其实是成立的。你很有可能已经知道了问题
,所以采取不理,以为这样就可过去,想不到的是我对这玩意的极大兴趣让我不卸地坚
持下去。
当时还没有空调俱乐部, 是通过email. 里边因该不是全部,有时候我不是紧接着上下
回的。还有大量的图片。以后我将会整理出来,作为技术贴。大家看是要按日期由下朝
上看。
那位同学,你太自私了!
寄信人: ---
标 题: Re... 阅读全帖 |
|
u*******g 发帖数: 1808 | 50 多谢大家关心和出主意
我的书包找回来了,她把我们的钱包放车上,书包在家里。我很不厚道的想她开始不想
给我们。如果想还给我们,当时就可以联系酒店前台。不用开出几十个mile过了几个小
时,再联系我们。
拿书包的和酒店应该有关系,因为酒店不在繁华的路上,那里的人不是员工就是住客。
她可能是员工,开始只是想占个小便宜,没想到包里东西值几千刀,还有那么多重要的
文件。如果被抓到,那value可能够给他带来挺大麻烦了,所以怕被抓到就还给我们了
。估计目击者描述很详细的事情酒店有人给她通风了。
也许是2年前我捡到ipad还给失主得到的回报吧,看来人还是要多做善事。
最后问个问题,所有的设备都在icloud上面设置了erase,现在不想erase了,icloud上
面没有取消的选项,怎么办? |
|