t*g
2 楼
刚找到工作,还是conditional offer, 现雇主和新雇主都用同一律所。新雇主要律所
做一个评估看我换工作有没有风险,大概就是看job description similarity.
请问我把资料给律所后,会不会有风险,同一个律所会不会把消息传到现雇主?
做一个评估看我换工作有没有风险,大概就是看job description similarity.
请问我把资料给律所后,会不会有风险,同一个律所会不会把消息传到现雇主?
y*n
3 楼
一个还是两个。
r*o
4 楼
这个风险是你绿卡的风险还是公司雇佣的风险?
u*o
5 楼
这个用swap应该可以做吧。碰到0就skip,非0的就一直swap,一直到它占在应该在的位
置上。再扫一遍,0在的位置就是被换掉的数。
置上。再扫一遍,0在的位置就是被换掉的数。
c*p
7 楼
为什么这个题最近考这么多?这个能干什么用?
s*n
11 楼
用hash的话, time O(n), Space O(n)
public void findTwoMiss2(int[] C) {
HashMap map = new HashMap();
int ret = 0;
for (int i = 0; i < C.length; i++)
map.put(C[i], C[i]);
for (int i = 1; i <= C.length + 2; i++) {
if (map.get(i) == null) {
System.out.println(i);
}
}
}
public void findTwoMiss2(int[] C) {
HashMap map = new HashMap();
int ret = 0;
for (int i = 0; i < C.length; i++)
map.put(C[i], C[i]);
for (int i = 1; i <= C.length + 2; i++) {
if (map.get(i) == null) {
System.out.println(i);
}
}
}
s*n
12 楼
或者先sort, 再check neighbor的 话, time O(nlogn), Space O(1), 不过都取决于
sort 的O(sort)
sort 的O(sort)
s*g
14 楼
if you can modify elements,you can realize it with time complexity O(n). set
arr[|arr[i]|] to negative, and check which two missing elements, and
finally set arr back to non-negative. Be careful with array index boundary.
arr[|arr[i]|] to negative, and check which two missing elements, and
finally set arr back to non-negative. Be careful with array index boundary.
s*n
17 楼
同样膜拜, 一碰到位运算的感觉就相碰到了递归, 简单还行, 稍微复杂一点只能背
题了。。。
题了。。。
l*0
19 楼
想出两种思路,都是O(N)的time复杂度。请看注释。
public class HelloWorld{
//Idea:put every element into its right position. which means input[i]
is placed at input[i]-1. Then if input[i]==0, then i+1 is one missing
number.
//this approach modifies the original array.
//O(N) time
public static void printMissing(int[] input){
for(int i=0;i while(i+1 swap(input, i, input[i]-1);
}
}
for(int i=0;i if(input[i]==0) System.out.println(i+1);
}
}
// Idea:suppose a and b are missing.
//First get a XOR b
//Find right-most different bit of a, b (say bit k);then seperate
array into two parts:
//either kth bit is 0 or 1. two numbers fall into different parts.
//do xor respectively to get two missing numbers
public static void printMissing2(int[] input){
int aXORb=0;
for(int i=0;i aXORb^=input[i]^(i+1);
}
int mask=aXORb-(aXORb&(aXORb-1));
int res[]=new int[2];
for(int i=0;i if((input[i]&mask)==0){
res[0]=res[0]^input[i];
}else{
res[1]=res[1]^input[i];
}
}
for(int i=0;i if(((i+1)&mask)==0){
res[0]=res[0]^(i+1);
}else{
res[1]=res[1]^(i+1);
}
}
//the above two loops can be combined. Here only for explanation
purpose I seperate the two.
System.out.println(res[0]);
System.out.println(res[1]);
}
public static void main(String []args){
int A[]={9,5,3,0,2,6,7,0,1,10};
printMissing2(A);
printMissing(A);
System.out.println("Hello World");
}
static void swap(int[]a, int i, int j){
if(i!=j){
int tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
}
【在 s*****w 的大作中提到】
: 面试官的问题:
: 将1-N,在随机排序在一个数组中。将其中两个数,换成0。
: 如何快速发现是哪两个数被换掉了?
: 求大牛解答!
public class HelloWorld{
//Idea:put every element into its right position. which means input[i]
is placed at input[i]-1. Then if input[i]==0, then i+1 is one missing
number.
//this approach modifies the original array.
//O(N) time
public static void printMissing(int[] input){
for(int i=0;i
}
}
for(int i=0;i
}
}
// Idea:suppose a and b are missing.
//First get a XOR b
//Find right-most different bit of a, b (say bit k);then seperate
array into two parts:
//either kth bit is 0 or 1. two numbers fall into different parts.
//do xor respectively to get two missing numbers
public static void printMissing2(int[] input){
int aXORb=0;
for(int i=0;i
}
int mask=aXORb-(aXORb&(aXORb-1));
int res[]=new int[2];
for(int i=0;i
res[0]=res[0]^input[i];
}else{
res[1]=res[1]^input[i];
}
}
for(int i=0;i
res[0]=res[0]^(i+1);
}else{
res[1]=res[1]^(i+1);
}
}
//the above two loops can be combined. Here only for explanation
purpose I seperate the two.
System.out.println(res[0]);
System.out.println(res[1]);
}
public static void main(String []args){
int A[]={9,5,3,0,2,6,7,0,1,10};
printMissing2(A);
printMissing(A);
System.out.println("Hello World");
}
static void swap(int[]a, int i, int j){
if(i!=j){
int tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
}
【在 s*****w 的大作中提到】
: 面试官的问题:
: 将1-N,在随机排序在一个数组中。将其中两个数,换成0。
: 如何快速发现是哪两个数被换掉了?
: 求大牛解答!
u*o
21 楼
我太喜欢你第二个solution了,知道x+y=a, x*y=b,
那么 x = (a+sqrt(a^2-b))/2, 初中经常解的方程组。。多少年不再用这个公式了,老
泪纵横啊。。
法。
【在 s*********n 的大作中提到】
: 这个题目的O(N)+O(1)解法太多了啊,哪需要递归和排序什么。
: 1,都给了数据范围那最直接的就是桶排序啊,就是leetcode那道题的所谓swap的解法。
: 2,再笨一点的方法可以在知道了x+y和x*y求取一元二次方程也很快啊,一次遍历完成
: 。缺点是容易溢出。
: 3,再或者用xor也可以啊,知道了x^y的值,再根据x^y中某个1的位置,对原数组分成
: 两类元
: 素分别进行xor,两遍遍历。也可以直接求出x和y啊。
那么 x = (a+sqrt(a^2-b))/2, 初中经常解的方程组。。多少年不再用这个公式了,老
泪纵横啊。。
法。
【在 s*********n 的大作中提到】
: 这个题目的O(N)+O(1)解法太多了啊,哪需要递归和排序什么。
: 1,都给了数据范围那最直接的就是桶排序啊,就是leetcode那道题的所谓swap的解法。
: 2,再笨一点的方法可以在知道了x+y和x*y求取一元二次方程也很快啊,一次遍历完成
: 。缺点是容易溢出。
: 3,再或者用xor也可以啊,知道了x^y的值,再根据x^y中某个1的位置,对原数组分成
: 两类元
: 素分别进行xor,两遍遍历。也可以直接求出x和y啊。
S*w
24 楼
def findMissingTwo(numList, N):
summ = 0
for num in numList:
summ += num
summOfMissingTwo = (N+1)*N/2 - summ
summ = 0
M = summOfMissingTwo/2
for num in numList:
if num <= M:
summ += num
a = (M+1)*M/2 - summ
b = summOfMissingTwo - a
print "The missing two are:%d and %d)"%(a, b)
numList = [1, 2, 3, 4, 0, 6, 0, 8, 9, 10]
findMissingTwo(numList, len(numList))
【在 s*****w 的大作中提到】
: 面试官的问题:
: 将1-N,在随机排序在一个数组中。将其中两个数,换成0。
: 如何快速发现是哪两个数被换掉了?
: 求大牛解答!
summ = 0
for num in numList:
summ += num
summOfMissingTwo = (N+1)*N/2 - summ
summ = 0
M = summOfMissingTwo/2
for num in numList:
if num <= M:
summ += num
a = (M+1)*M/2 - summ
b = summOfMissingTwo - a
print "The missing two are:%d and %d)"%(a, b)
numList = [1, 2, 3, 4, 0, 6, 0, 8, 9, 10]
findMissingTwo(numList, len(numList))
【在 s*****w 的大作中提到】
: 面试官的问题:
: 将1-N,在随机排序在一个数组中。将其中两个数,换成0。
: 如何快速发现是哪两个数被换掉了?
: 求大牛解答!
u*o
27 楼
s*r
32 楼
实际工作中,要考虑溢出,应当用xor的方法,不然设计上有问题,就不能用了。
如果面试,可以用一个基本能 work,思路正确的方法混过去,只要面试官没规定。
然后顺路提一下还有别的方法。
fail
【在 u*****o 的大作中提到】
: 老鲨,你说的reed solomon coding和galois field我都不太懂。我想问问你你的意思
: 是不是说,在实际工作中碰到此类问题(比如你说的很多block里2个data block fail
: ,找出这两个block),解法是解方程的那个办法,而不是那个xor的办法。我一直都觉得
: bit operations虽然快,但是野路子,不像是会被大规模使用的赶脚。。。
如果面试,可以用一个基本能 work,思路正确的方法混过去,只要面试官没规定。
然后顺路提一下还有别的方法。
fail
【在 u*****o 的大作中提到】
: 老鲨,你说的reed solomon coding和galois field我都不太懂。我想问问你你的意思
: 是不是说,在实际工作中碰到此类问题(比如你说的很多block里2个data block fail
: ,找出这两个block),解法是解方程的那个办法,而不是那个xor的办法。我一直都觉得
: bit operations虽然快,但是野路子,不像是会被大规模使用的赶脚。。。
t*h
38 楼
public class Solution {
public int firstMissingPositive(int[] a) {
// Start typing your Java solution below
// DO NOT write main() function
if(a == null) return -1;
int n = a.length;
int i = 0;
while(i < n){
if(a[i] != i+1 && a[i] > 0 && a[i] <= n && a[a[i]-1] != a[i]){
swap(a, i, a[i]-1);
}else{
i++;
}
}
for(i = 0; i < n; i++){
if(a[i] != i+1){
return i+1;
}
}
return n+1;
}
private void swap(int[] a, int i, int j){
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
【在 c********p 的大作中提到】
: 求个完整的code我研究研究。。。
public int firstMissingPositive(int[] a) {
// Start typing your Java solution below
// DO NOT write main() function
if(a == null) return -1;
int n = a.length;
int i = 0;
while(i < n){
if(a[i] != i+1 && a[i] > 0 && a[i] <= n && a[a[i]-1] != a[i]){
swap(a, i, a[i]-1);
}else{
i++;
}
}
for(i = 0; i < n; i++){
if(a[i] != i+1){
return i+1;
}
}
return n+1;
}
private void swap(int[] a, int i, int j){
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
【在 c********p 的大作中提到】
: 求个完整的code我研究研究。。。
c*p
40 楼
谢谢,我读读。。。
【在 t**********h 的大作中提到】
: public class Solution {
: public int firstMissingPositive(int[] a) {
: // Start typing your Java solution below
: // DO NOT write main() function
: if(a == null) return -1;
: int n = a.length;
:
: int i = 0;
: while(i < n){
: if(a[i] != i+1 && a[i] > 0 && a[i] <= n && a[a[i]-1] != a[i]){
【在 t**********h 的大作中提到】
: public class Solution {
: public int firstMissingPositive(int[] a) {
: // Start typing your Java solution below
: // DO NOT write main() function
: if(a == null) return -1;
: int n = a.length;
:
: int i = 0;
: while(i < n){
: if(a[i] != i+1 && a[i] > 0 && a[i] <= n && a[a[i]-1] != a[i]){
相关阅读
网站已经改成了 Upcoming Visa Bulletin有485是IO 0375的吗,请问批485手速是多少?140 之后 180之内跳槽公司到底能不能revoke 140DIY EB3 140 里面的几个小问题急问一个绿卡批了还没收到情况入境的问题NIW 485 有工资要求吗今天还没有人报绿小白提问 PD 12/2014,需要着手降级吗?13年3月的EB2今年有希望绿吗?Anyone writing up NIW需要各位的建议!!!拜谢拜谢关于5月排期的理解eb3 140 跳槽,还是继续投485看来怕折腾不想降级的EB2人数不少哇求问世界排期交485后半年能绿吗主申请人绿了,附申请人RFE,会是啥情况?老印搞的HR392是不是没可能通过?EB3 PD 7/2013 RD 04/2016 今年能绿吗?SR被reassign officerperm需要以前雇主的信息和证明么?