Redian新闻
>
不要再出来吓人了,对"北大飞"关于H-1B延期文章的纠错
avatar
不要再出来吓人了,对"北大飞"关于H-1B延期文章的纠错# EB23 - 劳工卡
a*0
1
自己的代码老通不过 不知道为什么
public class LRUCache {

int cap;

//hashmap is for Cache's storage
// arraylist is for item's recency
HashMap myHashMap = new HashMap();
// key-value
ArrayList myArrayList = new ArrayList();// key


public LRUCache(int capacity) {

this.cap = capacity;

}

public int get(int key) {

if(this.myHashMap.get(key) == null)
return -1;

this.myArrayList.remove(new Integer(key));
this.myArrayList.add(key);

return this.myHashMap.get(key).intValue();

}

public void set(int key, int value) {



if(this.myHashMap.size()< this.cap){

if(this.myHashMap.get(key) != null){

this.myHashMap.put(key,value);
this.myArrayList.remove(new Integer(key));
this.myArrayList.add(new Integer(key));
}else{
this.myHashMap.put(key,value);
this.myArrayList.add(new Integer(key));
}


}else{
if(this.myHashMap.get(key) != null){

this.myHashMap.put(key,value);
this.myArrayList.remove(new Integer(key));
this.myArrayList.add(new Integer(key));

}else{

this.myHashMap.remove(myArrayList.get(0));
this.myHashMap.put(key,value);
this.myArrayList.remove(0);
this.myArrayList.add(key);

}

}


}

}
avatar
d*o
2
本人的原创文章
2018年初,在网上和微信有一篇"北大飞"同学写的文章流传,题目是《川普政府反移民
再出狠招,大刀向H-1B们的头上砍去》。我作为北大校友,目前在美国做移民律师,读
了"北大飞"的文章以后,发现里面有若干错误。
几天后,又看到"北大飞"同学自己在后续文章中提到,他的这篇文章"引起了广泛重视
,其阅读量超过10万"。更严重的是,他在题为《对川普政府取消H-1B签证延期的深度
解读,前景不容乐观》的后续文章里面对于当前生效的美国法律(具体来说是关于H-1B
延期的条款)做出了错误解读,可能会误导很多人。因此,我认为有必要澄清“北大飞
”这两篇文章中的错误,包括似是而非和不完整不明确的地方。
先说最重要的,也是大家关心的,对于AC21法律里面的Section 106(a),(b)的解读。
全文在剑知信息网。
avatar
s*s
3
myArrayList.remove(new Integer(key)); 这个地方有问题吧,java 里面的remove(
index)是index/position 而不是key的吧
avatar
s*i
4
这个人是个川朴黑,几乎所有文章都在黑川朴

1B

【在 d********o 的大作中提到】
: 本人的原创文章
: 2018年初,在网上和微信有一篇"北大飞"同学写的文章流传,题目是《川普政府反移民
: 再出狠招,大刀向H-1B们的头上砍去》。我作为北大校友,目前在美国做移民律师,读
: 了"北大飞"的文章以后,发现里面有若干错误。
: 几天后,又看到"北大飞"同学自己在后续文章中提到,他的这篇文章"引起了广泛重视
: ,其阅读量超过10万"。更严重的是,他在题为《对川普政府取消H-1B签证延期的深度
: 解读,前景不容乐观》的后续文章里面对于当前生效的美国法律(具体来说是关于H-1B
: 延期的条款)做出了错误解读,可能会误导很多人。因此,我认为有必要澄清“北大飞
: ”这两篇文章中的错误,包括似是而非和不完整不明确的地方。
: 先说最重要的,也是大家关心的,对于AC21法律里面的Section 106(a),(b)的解读。

avatar
a*0
5
建议你看看arraylist的文档

【在 s******s 的大作中提到】
: myArrayList.remove(new Integer(key)); 这个地方有问题吧,java 里面的remove(
: index)是index/position 而不是key的吧

avatar
d*o
6
“北大飞”的文章对于AC21法律106条款的解读是错误的。 参见本人最近的文章的详细
分析:
http://www.jiansnet.com/topic/27546/on-h1b-extension
实际上,I-140申请批准的人同样可以使用AC21法律的Section 106条款来延期H-1B超过
六年,这是美国移民局允许的,而不是像“北大飞”说的那样“并不适用”。
第一,CFR法规,即移民局用来执行日常工作的依据,和AC21法律里面的106条款一样,
都没有提到I-140已经批准了就不能适用。条文里面只提到了I-140(或者PERM)申请提
交超过365天就可以适用。
第二,8 CFR 214.2(h)(13)(iii)(D)(10)专门提到:如果申请人的I-140已经批准,而
且排期已经到了,已经可以提交I-485,但是(因为拖延症懒癌发作等原因)在这种情
况下又超过了一年还没有提交I-485,就不能再用这一条规定来延期H-1B了。如果,在I
-140已经批准的情况下,申请人普遍不能用AC21的106条款和8 CFR 214.2(h)(13)(iii)
(D)来延期H-1B;那么,就不需要单独列出这种特殊情况了。
第三,除了上述的法规条文,美国移民局还公布了具体执行AC21法律的备忘录,内容详
细,里面明确提到,在根据AC21法律的106条款来审理H-1B延期申请时,需要考虑Labor
Certification的批准是否已经过期。 如果AC21法律的106条款,关于I-140/PERM申请
提交超过365天情况下的H-1B超过6年延期,只适用于PERM/I-140申请Pending的情况,
而不适用于申请已经批准(approved)的情况;那么,移民局怎么会在备忘录里面专门提
到,在审批这种情况的H-1B延期时,要考虑approved labor certification是否过期,
这一问题呢?
avatar
c*w
7
Use LinkedHashMap, check its javadoc.
avatar
a*u
8
看样子北大排名不如清华,居然出北大飞这种校友。
avatar
a*0
9
网上有人用你说的数据结构做LRU 我没仔细看 类似的代码一大堆
我估计我的代码一点错误也没有 只是超时而已

【在 c*********w 的大作中提到】
: Use LinkedHashMap, check its javadoc.
avatar
s*i
10
trump当选总统以后,这个北大飞跟死了老妈一样四处造谣
就说拉丁裔喜欢民主党,也没见他这么整天摸黑trump
avatar
l*i
11
If you use linkedHashMap, there is nothing to do to get LRUCache.
avatar
s*y
12
整天吓唬别人,渐渐的自己也会害怕
avatar
o*g
13
虽然ArrayList也有remove(Object O),但是int还有boxing unboxing,传一个Integer
,你确定是匹配remove(Object)而不匹配remove(int)?另外,实现的时候是用的==还
是equals,你知道么?

【在 a**********0 的大作中提到】
: 建议你看看arraylist的文档
avatar
K*n
14
北大飞这种臭名昭著的东西,写什么都是为了反川

1B

【在 d********o 的大作中提到】
: 本人的原创文章
: 2018年初,在网上和微信有一篇"北大飞"同学写的文章流传,题目是《川普政府反移民
: 再出狠招,大刀向H-1B们的头上砍去》。我作为北大校友,目前在美国做移民律师,读
: 了"北大飞"的文章以后,发现里面有若干错误。
: 几天后,又看到"北大飞"同学自己在后续文章中提到,他的这篇文章"引起了广泛重视
: ,其阅读量超过10万"。更严重的是,他在题为《对川普政府取消H-1B签证延期的深度
: 解读,前景不容乐观》的后续文章里面对于当前生效的美国法律(具体来说是关于H-1B
: 延期的条款)做出了错误解读,可能会误导很多人。因此,我认为有必要澄清“北大飞
: ”这两篇文章中的错误,包括似是而非和不完整不明确的地方。
: 先说最重要的,也是大家关心的,对于AC21法律里面的Section 106(a),(b)的解读。

avatar
a*0
15
我的程序超时 超在哪里呢?
我觉得hashmap的操作基本都是constant的 不可能超时 但是我用arraylist记录
recency
估计超时在这里

【在 l***i 的大作中提到】
: If you use linkedHashMap, there is nothing to do to get LRUCache.
avatar
c*x
16
sundaysunday
字体大小: 发表于 2018-01-08 19:50 |只看该用户
昨天看到trackit上一印度人写的, 已过140, 延了三次了, level 3工资, software
engineer, CS本科和研究生, 这次延期被锯了, 大家都具震惊. 他说他去年11月刚买
的房子, 现在却要马上离境. 感觉现在延期情况很不好. 他最后总结就是: 现在的情
况太糟了, 什么都难以预料,拿到绿卡再买房子.
avatar
P*r
17
arraylist 的remove比较花时间吧?
avatar
d*o
18
持H-1B签证身份的印度人至少有几十万。其中某些个人的延期申请被拒有可能,这和美
国政府禁止H-1B延期完全是两回事。

【在 c****x 的大作中提到】
: sundaysunday
: 字体大小: 发表于 2018-01-08 19:50 |只看该用户
: 昨天看到trackit上一印度人写的, 已过140, 延了三次了, level 3工资, software
: engineer, CS本科和研究生, 这次延期被锯了, 大家都具震惊. 他说他去年11月刚买
: 的房子, 现在却要马上离境. 感觉现在延期情况很不好. 他最后总结就是: 现在的情
: 况太糟了, 什么都难以预料,拿到绿卡再买房子.

avatar
a*0
19
我不知道这个题目要做什么 用java collections 非常容易解决 尽管不快
你有什么建议吗 难道只能linkedhashmap
因为这个保留recency的数据结构必须要求 1 可以删除 端点 2 可以删除object
hashmap不能 因为不支持删除端节点
list 可以删端节点 但是又不支持删object
arraylist可以 但是慢


【在 P******r 的大作中提到】
: arraylist 的remove比较花时间吧?
avatar
e*l
20
arraylist remove需要o (n). 自己实现一个链表, o (1)删除, 就可以过了
avatar
a*0
21
自己实现的list只能记录recency 也就是哪一个是最老的 : 头节点
我需要这个list还要有根据内容 添加 删除 的功能
所以这不是一个option

【在 e***l 的大作中提到】
: arraylist remove需要o (n). 自己实现一个链表, o (1)删除, 就可以过了
avatar
h*h
22
hashmap + linkedlist
avatar
e*l
23
自己维护prev, next, 添加删除都是常数时间。这是最容易想到的解法。

【在 a**********0 的大作中提到】
: 自己实现的list只能记录recency 也就是哪一个是最老的 : 头节点
: 我需要这个list还要有根据内容 添加 删除 的功能
: 所以这不是一个option

avatar
e*l
24
刚才又想了一下,不自己实现双链表,直接用一个list和两个hashmap也能做,能通过
OJ,而且更简洁。等会有时间贴代码
avatar
e*l
25
import java.util.ArrayList;
import java.util.HashMap;
// TODO: rename this class to "LURCahch" for Leetcode submission
public class LRUCache2 {
private ArrayList list; // list of keys
private HashMap valueMap; // key-value map
private HashMap countMap; // appearance of each keys
in the key list
private int maxSize;
public LRUCache2(int capacity) {
maxSize = capacity;
list = new ArrayList();
valueMap = new HashMap();
countMap = new HashMap();
}
public int get(int key) {
if (valueMap.containsKey(key)) {
removeEldest(); // remove eldest entry if necessary
} else {
return -1;
}
list.add(key);
countMap.put(key, countMap.containsKey(key) ? countMap.get(key) + 1
return valueMap.containsKey(key) ? valueMap.get(key) : -1;
}
// append new keys
public void set(int key, int value) {
list.add(key);
countMap.put(key, countMap.containsKey(key) ? countMap.get(key) + 1
valueMap.put(key, value);
}
public void removeEldest() {
while (valueMap.size() > maxSize) {
int key = list.remove(0);
int count = countMap.get(key);
if (count == 1) {
valueMap.remove(key); // the least used entry
}
countMap.put(key, count - 1);
}
}
}
avatar
p*2
26

面试不是刷题。

【在 e***l 的大作中提到】
: 刚才又想了一下,不自己实现双链表,直接用一个list和两个hashmap也能做,能通过
: OJ,而且更简洁。等会有时间贴代码

avatar
l*a
27
大牛介绍一下
那些面试要求system design,建一个scalable web/distributed system
然后进去之后就是整天维护别人的code, 解点小bug
充其量在现有architecture上照葫芦画瓢的加点新功能
的厂子是咋回事?

【在 p*****2 的大作中提到】
:
: 面试不是刷题。

avatar
z*e
28
好像你说对了
remove有两个方法
在overload的时候要区分
remove(object)和remove(int)方法
这个在1.5之后是经常出问题的一个地方
autoboxing其实做得不好

【在 s******s 的大作中提到】
: myArrayList.remove(new Integer(key)); 这个地方有问题吧,java 里面的remove(
: index)是index/position 而不是key的吧

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