Redian新闻
>
问下大家买房子国内家里帮忙出资的钱怎么转过来呢。。。
avatar
问下大家买房子国内家里帮忙出资的钱怎么转过来呢。。。# Living
D*0
1
网上申请的,回复的挺快,安排了code challenge,一道题,不限时,半个小时写完了
,发过去,第二天收到了thank you but 88.不知道哪里的问题。
* Write a function that takes two parameters:
* (1) a String representing a text document and
* (2) an integer providing the number of items to return.
* Implement the function such that it returns a list of Strings ordered by
word frequency,
* the most frequently occurring word first.
* Use your best judgement to decide how words are separated.
* Your solution should run in O(n) time where n is the number of characters
in the document.
这是我的solution,给了两种:
public class getTopKFrequentWords {

/* static class PQsort implements Comparator>{
@Override
public int compare(Entry arg0,
Entry arg1) {
// TODO Auto-generated method stub
return arg1.getValue() - arg0.getValue();
}

}*/
/* this function treats words with the same frequency differently
* 1. create a hashmap with , then split the input
string into words, scan these words to
* fill out the hashmap. O(n)
* 2. create a size k min-heap(in java priority queue), iterate the
hashmap, and put each
* pair to the min-heap, which sorts based on the frequency. O(mlogk) m
is the total number of words
* 3. fill out a string list with the result min-heap in the above step.
O(klogk)
*
* Total time complexity : O(n) + O(mlogk) + O(klogk) = O(n)
*/
public static LinkedList getTopKFrequentWords(final String doc,
final int k)
{
LinkedList ret = new LinkedList();
if(k <= 0 || "".equals(doc)) return ret;
HashMap map = new HashMap();

/* // I use white space and as delimiter
String[] words = doc.split("(\s|\p{Punct})+");
for(String word : words)
{
int count = 0;
if(map.containsKey(word))
{
count = map.get(word);
}
count++;
map.put(word, count);
}*/
StringBuilder word = new StringBuilder();
String lowercaseDoc = doc.toLowerCase();
for(int i=0; i{
if(isLetter(lowercaseDoc.charAt(i)))
{
word.append(lowercaseDoc.charAt(i));
}
else
{
// we have a word
if(word.length() > 0)
{
int count = 0;
if(map.containsKey(word.toString()))
{
count = map.get(word.toString());
}
count++;
map.put(word.toString(), count);
word = new StringBuilder();
}
}
}
// the last word
if(word.length() > 0)
{
int count = 0;
if(map.containsKey(word))
{
count = map.get(word);
}
count++;
map.put(word.toString(), count);
word = new StringBuilder();
}

PriorityQueue> minHeap = new
PriorityQueue>(k, new Comparator, Integer>>(){
@Override
public int compare(Map.Entry entry1, Map.Entry<
String, Integer> entry2)
{
return entry2.getValue() - entry1.getValue();
}
});

for(Map.Entry entry : map.entrySet())
{
System.out.println(entry.getKey() + "-->" + entry.getValue());
minHeap.offer(entry);
}
int i = 0;
while(i < k && minHeap.size() > 0)
{
//System.out.println(minHeap.peek().getKey() + "-->" + minHeap.
peek().getValue());
ret.add(minHeap.poll().getKey());
i++;
}
return ret;
}
/* this function gets all the words with the same frequency
* 1. create a hashmap with , then split the input
string into words, scan these words to
* fill out the hashmap. O(n)
* 2. create a hasmap with >, then scan the above
map to fill out this map. O(m) m is the total number of words
* 2. create a size k min-heap(in java priority queue), iterate the
hashmap, and put each >
* pair to the min-heap, which sorts based on the frequency. O(flogk) f
is total number of frequencies
* 3. fill out a string list with the result min-heap in the above step.
O(klogk)
*
* Total time complexity : O(n) + O(m) + O(flogk) + O(klogk) = O(n)
*/
public static LinkedList getTopKFrequentWords2(final String doc,
final int k)
{
LinkedList ret = new LinkedList();
if(k <= 0 || "".equals(doc)) return ret;
HashMap map = new HashMap();

// I use white space and as delimiter
/* String[] words = doc.split("(\s|\p{Punct})+");
for(String word : words)
{
int count = 0;
if(map.containsKey(word))
{
count = map.get(word);
}
count++;
map.put(word, count);
}*/

StringBuilder word = new StringBuilder();
String lowercaseDoc = doc.toLowerCase();
for(int i=0; i{
if(isLetter(lowercaseDoc.charAt(i)))
{
word.append(lowercaseDoc.charAt(i));
}
else
{
// we have a word
if(word.length() > 0)
{
int count = 0;
if(map.containsKey(word.toString()))
{
count = map.get(word.toString());
}
count++;
map.put(word.toString(), count);
word = new StringBuilder();
}
}
}
// the last word
if(word.length() > 0)
{
int count = 0;
if(map.containsKey(word.toString()))
{
count = map.get(word.toString());
}
count++;
map.put(word.toString(), count);
}

PriorityQueue>> minHeap = new
PriorityQueue>>(k, new ComparatorEntry>>(){
@Override
public int compare(Map.Entry> entry1
, Map.Entry> entry2)
{
return entry2.getKey() - entry1.getKey();
}
});

HashMap> statMap = new HashMapLinkedList>();
for(Map.Entry entry : map.entrySet())
{
LinkedList list = null;
if(statMap.containsKey(entry.getValue()))
{
list = statMap.get(entry.getValue());
}
else
{
list = new LinkedList();
}
list.add(entry.getKey());
statMap.put(entry.getValue(), list);
}

for(Map.Entry> entry : statMap.entrySet(
))
{
System.out.println(entry.getKey() + "-->" + entry.getValue());
minHeap.offer(entry);
}
int i = 0;
while(i < k && minHeap.size() > 0)
{
//System.out.println(minHeap.peek().getKey() + "-->" + minHeap.
peek().getValue());
ret.addAll(minHeap.poll().getValue());
i++;
}
return ret;
}

public static boolean isLetter(final char ch)
{
return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
}
}
难道不是o(n)?
avatar
s*r
2
我用UA的点数给爸妈换的回国飞机,结果机械原因晚点
收到apprecation email,可是那个link要么输入乘客的mileagePlus#要么给个一年过期
的certificate,爸妈没有UA账号,一年内也不太可能用这个certificate。
可以要求把点数转到我的UA账户吗?
打电话去问,客服说customer care部门没有电话,让我先去united/feedback提交
request,可是那个网站填完信息,一点continue,就one moment please画面一直等,
换浏览器也不行...
哪位给指点一下,谢谢
avatar
m*r
3
我和同事,都是公司一起申请的。PD一样。其他RD,RFE,RRFE,都差不多。最多差半个月。
PD 08/13
RD 07/15
RFE 11/17 (medical)
RRFE 1/18
Card ordered 1/10/18
Card mailed 1/12/18
另一个
Card ordered 1/17/18
Card mailed 1/22/18
版上学习了很多。非常感谢。
avatar
b*2
4
完全懵了。。。
说是电汇的话是 要60天BANK STATEMENT.但是国内银行的存款证明完全不是一个概念啊
,国内是从存款证明开始往后开始冻结,根本不能反映前面两个月的资金状况。。
然后用支票就更加一筹莫展了,不知道可不可以。。。
大家有经验的来说说吧~~~谢谢
avatar
s*y
5
扫了一眼,逻辑对不对不太清楚。但是这种code写法是肯定不行的。
1.边界条件cover 不够
2.完全没有考虑内存,很可能溢出。
3.算法复杂度 很大。
4.居然 作为一个dev 不写unitest, 这一点是最大的问题。
5. 没有足够的注解。
6. 多余的废话改删掉的 就要删掉。
7. 随便看一眼就能看出好几个bug
问题太多了,先不说你的code 能不能work(肯定是不work的)。你的态度问题很大,
你估计是刚毕业的吧。
avatar
d*0
6
Certificate可以给你用

【在 s***r 的大作中提到】
: 我用UA的点数给爸妈换的回国飞机,结果机械原因晚点
: 收到apprecation email,可是那个link要么输入乘客的mileagePlus#要么给个一年过期
: 的certificate,爸妈没有UA账号,一年内也不太可能用这个certificate。
: 可以要求把点数转到我的UA账户吗?
: 打电话去问,客服说customer care部门没有电话,让我先去united/feedback提交
: request,可是那个网站填完信息,一点continue,就one moment please画面一直等,
: 换浏览器也不行...
: 哪位给指点一下,谢谢

avatar
s*d
7

月。
恭喜!PD比你早半个月,希望早绿

【在 m******r 的大作中提到】
: 我和同事,都是公司一起申请的。PD一样。其他RD,RFE,RRFE,都差不多。最多差半个月。
: PD 08/13
: RD 07/15
: RFE 11/17 (medical)
: RRFE 1/18
: Card ordered 1/10/18
: Card mailed 1/12/18
: 另一个
: Card ordered 1/17/18
: Card mailed 1/22/18

avatar
x*i
8
什么意思?没看懂
avatar
D*0
9
请给个可能达到要求的呗,学习一下,下次知道哪里应该注意。谢谢。

【在 s******y 的大作中提到】
: 扫了一眼,逻辑对不对不太清楚。但是这种code写法是肯定不行的。
: 1.边界条件cover 不够
: 2.完全没有考虑内存,很可能溢出。
: 3.算法复杂度 很大。
: 4.居然 作为一个dev 不写unitest, 这一点是最大的问题。
: 5. 没有足够的注解。
: 6. 多余的废话改删掉的 就要删掉。
: 7. 随便看一眼就能看出好几个bug
: 问题太多了,先不说你的code 能不能work(肯定是不work的)。你的态度问题很大,
: 你估计是刚毕业的吧。

avatar
l*y
10
里程不行
certificate可以

【在 s***r 的大作中提到】
: 我用UA的点数给爸妈换的回国飞机,结果机械原因晚点
: 收到apprecation email,可是那个link要么输入乘客的mileagePlus#要么给个一年过期
: 的certificate,爸妈没有UA账号,一年内也不太可能用这个certificate。
: 可以要求把点数转到我的UA账户吗?
: 打电话去问,客服说customer care部门没有电话,让我先去united/feedback提交
: request,可是那个网站填完信息,一点continue,就one moment please画面一直等,
: 换浏览器也不行...
: 哪位给指点一下,谢谢

avatar
d*i
11
开始处理8月的啦!恭喜!
avatar
b*2
12
要出具60天内的对账单。。。
我爸去银行了,打出来是一个“新线存款历史交易明细清单”。。。

【在 x*****i 的大作中提到】
: 什么意思?没看懂
avatar
s*y
13
先自己写几个test 然后跑一下。
还有一点 不能一个func 一写到底, 要分成几个小模块写

【在 D***0 的大作中提到】
: 请给个可能达到要求的呗,学习一下,下次知道哪里应该注意。谢谢。
avatar
s*r
14
可是certificate短期内也用不了,而且好像是一年过期,可以卖吗?

【在 l****y 的大作中提到】
: 里程不行
: certificate可以

avatar
t*y
15
请问你们有催绿么?我也是差不多时间的PD

月。

【在 m******r 的大作中提到】
: 我和同事,都是公司一起申请的。PD一样。其他RD,RFE,RRFE,都差不多。最多差半个月。
: PD 08/13
: RD 07/15
: RFE 11/17 (medical)
: RRFE 1/18
: Card ordered 1/10/18
: Card mailed 1/12/18
: 另一个
: Card ordered 1/17/18
: Card mailed 1/22/18

avatar
x*i
16
so your lender is asking for bank statements from your parents? my lender
didn't do that. anyway, 交易明细清单 should be good enough as long as it
shows their account info and balance

【在 b********2 的大作中提到】
: 要出具60天内的对账单。。。
: 我爸去银行了,打出来是一个“新线存款历史交易明细清单”。。。

avatar
r*s
17
这应该很简单吧,什么unit test之类的就算了,考算法unit test个啥?
1. 首先定义separator, (空格,逗号,句号,quote,double quote,period, EOF)
2. loop through the string char by char,加到一个string buffer里面,遇到上面
定义的separator就返回一个word,同时reset string buffer。
3. count,可以用hashmap
4. 完了以后loop through hashmap, 找出topk。
应该很少的code,大约十几行就行了。
我觉得你的问题是shit load of code,简单的程序写得太多,一看就是没有经验 --
有经验的码工都烦复杂程序,很难debug。
avatar
l*y
18
可以,出门左转二手版

【在 s***r 的大作中提到】
: 可是certificate短期内也用不了,而且好像是一年过期,可以卖吗?
avatar
M*7
19
我也是七月的PD, TSC的,到现在也没绿,请问你绿了吗?

【在 s******d 的大作中提到】
:
: 月。
: 恭喜!PD比你早半个月,希望早绿

avatar
j*y
20
您就使用电汇,您爸爸需要您的银行地址,账户号码,家庭地址,您的全名即可电汇,3天之
内就可到账.
avatar
s*y
21
你工作中不写unit test? 这个题重点不是考算法,算法答案网上可以搜到,考的是老
板交给你一个任务你会怎么去完成。

【在 r****s 的大作中提到】
: 这应该很简单吧,什么unit test之类的就算了,考算法unit test个啥?
: 1. 首先定义separator, (空格,逗号,句号,quote,double quote,period, EOF)
: 2. loop through the string char by char,加到一个string buffer里面,遇到上面
: 定义的separator就返回一个word,同时reset string buffer。
: 3. count,可以用hashmap
: 4. 完了以后loop through hashmap, 找出topk。
: 应该很少的code,大约十几行就行了。
: 我觉得你的问题是shit load of code,简单的程序写得太多,一看就是没有经验 --
: 有经验的码工都烦复杂程序,很难debug。

avatar
m*2
22
恭喜,我也是7月rd,没有一点动静,lz是nsc的吗?
avatar
G*s
23
赞有钱的粑粑麻麻
avatar
r*s
24
扯淡。

【在 s******y 的大作中提到】
: 你工作中不写unit test? 这个题重点不是考算法,算法答案网上可以搜到,考的是老
: 板交给你一个任务你会怎么去完成。

avatar
m*r
25
什么都没干。8/7的PD。一月CURRENT.

【在 t*********y 的大作中提到】
: 请问你们有催绿么?我也是差不多时间的PD
:
: 月。

avatar
G*s
26
赞有钱的粑粑麻麻
avatar
z*e
27
嗯,查找效率hashmap最快,set prime = 31,对于26个字母足够用,不会碰撞
用priorityqueue反而需要lnk
最后有一个sort,这个时候再用priorityqueue都可以撒
或者干脆就弄两个,一个hashmap一个priorityqueue
对于每一个单词,对map取出来,然后+1之后put进去
接收一个参数k,然后存top k在priorityqueue里面

【在 r****s 的大作中提到】
: 这应该很简单吧,什么unit test之类的就算了,考算法unit test个啥?
: 1. 首先定义separator, (空格,逗号,句号,quote,double quote,period, EOF)
: 2. loop through the string char by char,加到一个string buffer里面,遇到上面
: 定义的separator就返回一个word,同时reset string buffer。
: 3. count,可以用hashmap
: 4. 完了以后loop through hashmap, 找出topk。
: 应该很少的code,大约十几行就行了。
: 我觉得你的问题是shit load of code,简单的程序写得太多,一看就是没有经验 --
: 有经验的码工都烦复杂程序,很难debug。

avatar
m*r
28
是的NSC

【在 m*********2 的大作中提到】
: 恭喜,我也是7月rd,没有一点动静,lz是nsc的吗?
avatar
l*o
29
60天bank statement难道不是说的这里的银行账户么?

【在 b********2 的大作中提到】
: 完全懵了。。。
: 说是电汇的话是 要60天BANK STATEMENT.但是国内银行的存款证明完全不是一个概念啊
: ,国内是从存款证明开始往后开始冻结,根本不能反映前面两个月的资金状况。。
: 然后用支票就更加一筹莫展了,不知道可不可以。。。
: 大家有经验的来说说吧~~~谢谢

avatar
z*e
30
String[] words = doc.split("(\s|\p{Punct})+");
这一步直接给你溢出
你等于把整个文档全部读入内存
你这样搞不是一个big data的搞法
input string的意思是file name
a String representing a text document
意思是file name不是整个doc
要求你用input stream
依次读取这个file的character
这里考java io,上课说tf idf老师应该布置过这种作业吧?
给你们一个超大的file,然后要求你去统计tf和idf
这个时候肯定不能直接先读取整个文档成string
要用input stream一点一点读,而且最好是buffered input stream
这个题目还是不错的
我用python写过,慢得跟什么一样的,激励嘎啦跑了几十分钟
我的laptop都快死机了,还是java好用
avatar
s*d
31

NSC的,还没绿

【在 M********7 的大作中提到】
: 我也是七月的PD, TSC的,到现在也没绿,请问你绿了吗?
avatar
p*y
32
问问别家lender吧,一般请家里人代汇,出示“电汇底单+gift letter+钱到美国帐上
的记录”就可以了。
不要以自己的名义online transfer到美国,那样source起来很郁闷的。
avatar
z*e
33
这个考点罗列一下
1)hashcode,heap查找效率低,hashmap快,快很多
2)priorityqueue或者你说heap,min root heap这些
3)java io,不能全部读入内存,会爆的
4)tf idf,这个只考个tf的定义
是常见的top k的变种
这是第几次说top k question了?
avatar
b*2
34
谢谢大家回复,我们明天再去银行问问看
avatar
D*0
35
这个我注释掉了。。。。。。。。。。。
另外题意说是一个input string,既然这样,肯定内存能装下吧,要不就应该说input
是一个stream了。

【在 z****e 的大作中提到】
: String[] words = doc.split("(\s|\p{Punct})+");
: 这一步直接给你溢出
: 你等于把整个文档全部读入内存
: 你这样搞不是一个big data的搞法
: input string的意思是file name
: a String representing a text document
: 意思是file name不是整个doc
: 要求你用input stream
: 依次读取这个file的character
: 这里考java io,上课说tf idf老师应该布置过这种作业吧?

avatar
s*y
36
中国建行-> Bank of America, 24小时到帐。

【在 b********2 的大作中提到】
: 完全懵了。。。
: 说是电汇的话是 要60天BANK STATEMENT.但是国内银行的存款证明完全不是一个概念啊
: ,国内是从存款证明开始往后开始冻结,根本不能反映前面两个月的资金状况。。
: 然后用支票就更加一筹莫展了,不知道可不可以。。。
: 大家有经验的来说说吧~~~谢谢

avatar
D*0
37
这里是两个function,再把注释去掉,code也没剩多少了。。。。。

【在 r****s 的大作中提到】
: 这应该很简单吧,什么unit test之类的就算了,考算法unit test个啥?
: 1. 首先定义separator, (空格,逗号,句号,quote,double quote,period, EOF)
: 2. loop through the string char by char,加到一个string buffer里面,遇到上面
: 定义的separator就返回一个word,同时reset string buffer。
: 3. count,可以用hashmap
: 4. 完了以后loop through hashmap, 找出topk。
: 应该很少的code,大约十几行就行了。
: 我觉得你的问题是shit load of code,简单的程序写得太多,一看就是没有经验 --
: 有经验的码工都烦复杂程序,很难debug。

avatar
z*e
38
file name就是一个input string啊
内存装不下的,你要用buffered input stream
我觉得是你误解了它要说的呢
string大小其实并不大,也就是几千个我记得
我记得我用一万字杀进去
string对象就爆了

input

【在 D***0 的大作中提到】
: 这个我注释掉了。。。。。。。。。。。
: 另外题意说是一个input string,既然这样,肯定内存能装下吧,要不就应该说input
: 是一个stream了。

avatar
z*e
39
哈哈,但是你用了好几个的内部类和匿名类
我看了都痛苦呢,这两个最好是避开使用的
你单独写一个class在public class下面就好了
你按照它说的改,我觉得过没啥问题
它说的基本靠谱

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