Redian新闻
>
柠檬树叶上有很多白色的虫卵,该用什么药? (转载)
avatar
柠檬树叶上有很多白色的虫卵,该用什么药? (转载)# gardening - 拈花惹草
t*2
1
1002个数, 数的范围是1到1000.
找出2个duplicate的数,要求Space O(1)
avatar
w*i
2
身份证已经失效了.
avatar
j*n
3
【 以下文字转载自 Living 讨论区 】
发信人: judien (Now we are one!), 信区: Living
标 题: 柠檬树叶上有很多白色的虫卵,该用什么药?
发信站: BBS 未名空间站 (Fri Sep 11 17:34:25 2015, 美东)
几乎每一片叶子上都有,是不是要喷些农药了?有什么农药推荐的吗?
avatar
c*r
4
public class FindDuplicatedInt {
public static int FindDup(int[] arr)
{
if(arr.length > 1002 || arr == null) return -1;
int checker = 0;
for(int i = 0;iint val = arr[i];
if((checker & (1<0){
return val;
}
checker |= (1<}
return -1;
}
public static void main(String[] args) {
int [] a = new int[]{1,2,3,4,5,6,7,8,9,10,2};
System.out.println(FindDup(a));

}
}
avatar
h*e
5
户口转回老家,办理老家的户籍证明。这样是最没有风险的。
avatar
l*d
6
sevin
avatar
C*U
7
算法和找最小的没有出现的正整数的算法一样
把i放到A[i-1]去,那么A[1000]和A[1001]就是重复的两个数
这样是O(n)时间,O(1)空间

【在 t*****2 的大作中提到】
: 1002个数, 数的范围是1到1000.
: 找出2个duplicate的数,要求Space O(1)

avatar
w*i
8
户口转回老家也要提供现在的户籍证明啊.

【在 h*******e 的大作中提到】
: 户口转回老家,办理老家的户籍证明。这样是最没有风险的。
avatar
s*o
9
this is wrong
try any number larger than 32

【在 c********r 的大作中提到】
: public class FindDuplicatedInt {
: public static int FindDup(int[] arr)
: {
: if(arr.length > 1002 || arr == null) return -1;
: int checker = 0;
: for(int i = 0;i: int val = arr[i];
: if((checker & (1<0){
: return val;
: }

avatar
y*x
10
你的档案有没有从公司拿出来放到人才?
人才是可以办相关证明的

【在 w********i 的大作中提到】
: 身份证已经失效了.
avatar
c*r
11
还真是,多谢大侠指正。 能解释一下原因吗?我想了一下,没想出为什么

【在 s******o 的大作中提到】
: this is wrong
: try any number larger than 32

avatar
a*0
12
搭车同问,人才档案欠费太久会不会被扔了呀?

【在 y**x 的大作中提到】
: 你的档案有没有从公司拿出来放到人才?
: 人才是可以办相关证明的

avatar
r*e
13
两个重复的数是不一样的还是可能相同?

【在 t*****2 的大作中提到】
: 1002个数, 数的范围是1到1000.
: 找出2个duplicate的数,要求Space O(1)

avatar
e*p
14
保证不仍,等你要的时候一次结清

【在 a*0 的大作中提到】
: 搭车同问,人才档案欠费太久会不会被扔了呀?
avatar
a*d
15
这么写行么?
public static List getDup(int[] org)
{
List ls= new List();
int length=org.length;
int[] chk= new int[length];
for(int i=0;i{
int tempt=org[i];
if(arr[tempt]<=0)
{arr[tempt]=tempt;}
else
{ls.add(tempt);}
}//end of for
return ls;
}
avatar
a*a
16
我现在也苦恼呢。当年把户口留北京集体户口,档案都放在那里,就要不断的交钱。
要移到老家,可是没办法移,要本人身份证
办理身份证必须本人到场,且还得去指纹,所以必须两次,中间间隔要3个星期,回国
哪里会这么幸运有这么长的假期还得待一个地方啊。
avatar
l*a
17
什么叫第1000出现的?
数组如果是1,1,1,2,3,4。。。呢

【在 C***U 的大作中提到】
: 算法和找最小的没有出现的正整数的算法一样
: 把i放到A[i-1]去,那么A[1000]和A[1001]就是重复的两个数
: 这样是O(n)时间,O(1)空间

avatar
e*p
18
早就应该把户口转回原籍,档案回原籍街道,按无业游民算,不要钱。如果海归了能落
户,再转一次就是,很简单。
这种落人才的集体户口屁用没有,还要交存档费。lz那种拿了户口卡不还的,还有被销
户的风险,到时侯啥都转不了,死锁。

【在 a*****a 的大作中提到】
: 我现在也苦恼呢。当年把户口留北京集体户口,档案都放在那里,就要不断的交钱。
: 要移到老家,可是没办法移,要本人身份证
: 办理身份证必须本人到场,且还得去指纹,所以必须两次,中间间隔要3个星期,回国
: 哪里会这么幸运有这么长的假期还得待一个地方啊。

avatar
c*r
19
这个应该没问题了,欢迎大家指正
public static int FindDup2(int[] arr)
{
if(arr.length > 1002 || arr == null) return -1;
boolean[] check = new boolean[1002];
for(int i =0;iif(check[arr[i]])
{
return arr[i];
}else{
check[arr[i]]=true;
}
}

return -1;
}
public static void main(String[] args) {
int [] a = new int[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,31,32,33,34,40,40};
System.out.println(FindDup2(a));

}
avatar
y*x
20
北京好像快要不收钱了,明年还是什么时候开始

【在 a*****a 的大作中提到】
: 我现在也苦恼呢。当年把户口留北京集体户口,档案都放在那里,就要不断的交钱。
: 要移到老家,可是没办法移,要本人身份证
: 办理身份证必须本人到场,且还得去指纹,所以必须两次,中间间隔要3个星期,回国
: 哪里会这么幸运有这么长的假期还得待一个地方啊。

avatar
l*a
21
用了多少空间?

【在 c********r 的大作中提到】
: 这个应该没问题了,欢迎大家指正
: public static int FindDup2(int[] arr)
: {
: if(arr.length > 1002 || arr == null) return -1;
: boolean[] check = new boolean[1002];
: for(int i =0;i: if(check[arr[i]])
: {
: return arr[i];
: }else{

avatar
a*0
22
当年办个北京户口不容易呀,哪有那么轻松去放弃。。。

【在 e*p 的大作中提到】
: 早就应该把户口转回原籍,档案回原籍街道,按无业游民算,不要钱。如果海归了能落
: 户,再转一次就是,很简单。
: 这种落人才的集体户口屁用没有,还要交存档费。lz那种拿了户口卡不还的,还有被销
: 户的风险,到时侯啥都转不了,死锁。

avatar
C*U
23
1,1,1,2,3,4,5.。。。
这个数组
一个1被放在A[0]
2被放在A[1]
3被放在A[2]
以此类推
做完这样以后
两个多余的1会被放在A[1000]和A[1001]

【在 l*****a 的大作中提到】
: 什么叫第1000出现的?
: 数组如果是1,1,1,2,3,4。。。呢

avatar
e*p
24
理解。可是这种放人才的集体户口什么用都没有,跟真正的个人户口完全两码事。真办
个事还不方便,唯一的作用是给人才贡献存档费。

【在 a*0 的大作中提到】
: 当年办个北京户口不容易呀,哪有那么轻松去放弃。。。
avatar
j*e
25
另一种思路: 假定重复的是x和y,
把1002个数异或,结果应该是 A = x^y,
把1002个数加起来再减去Sum(1..1000),结果是B = x+y
这两个方程应该能解出唯一的x和y吧

【在 t*****2 的大作中提到】
: 1002个数, 数的范围是1到1000.
: 找出2个duplicate的数,要求Space O(1)

avatar
a*a
26
我现在就是郁闷,到底应该如何处置比较妥当呢?
没有身份证无法迁出,办理身份证过程很复杂。

【在 y**x 的大作中提到】
: 北京好像快要不收钱了,明年还是什么时候开始
avatar
c*r
27
O(1)

【在 l*****a 的大作中提到】
: 用了多少空间?
avatar
w*i
28
我问过了离职了不给办身份证,让找地方落户,或者迁回原籍.
可迁回原籍公安局需要现在的户籍证明.不知道有没有人在北京办过户籍证明?
avatar
x*1
29
A = x^y,
B = x+y
能解出来么?呵呵, willing wish了。
avatar
a*0
30
拿户籍卡不就可以去公安局办证吗?
不离职也是一样的程序吧,当然必须亲自

【在 w********i 的大作中提到】
: 我问过了离职了不给办身份证,让找地方落户,或者迁回原籍.
: 可迁回原籍公安局需要现在的户籍证明.不知道有没有人在北京办过户籍证明?

avatar
x*1
31
不堪题目么, O(1)空间。 A 哪来的?

【在 C***U 的大作中提到】
: 1,1,1,2,3,4,5.。。。
: 这个数组
: 一个1被放在A[0]
: 2被放在A[1]
: 3被放在A[2]
: 以此类推
: 做完这样以后
: 两个多余的1会被放在A[1000]和A[1001]

avatar
c*l
32
你是说这种情况无法办二代身份证?
我也是手里拿着户口卡,档案放人才。就不知怎样才能换身份证,现在国内一代身份证
基本没什么用了。上个月回去,强烈感觉没有二代身份证非常不方便。

【在 w********i 的大作中提到】
: 我问过了离职了不给办身份证,让找地方落户,或者迁回原籍.
: 可迁回原籍公安局需要现在的户籍证明.不知道有没有人在北京办过户籍证明?

avatar
x*1
33
boolean[] check = new boolean[1002];
???

【在 c********r 的大作中提到】
: O(1)
avatar
c*y
34
别折腾了,到老家拖个关系办一下就好,

【在 a*****a 的大作中提到】
: 我现在就是郁闷,到底应该如何处置比较妥当呢?
: 没有身份证无法迁出,办理身份证过程很复杂。

avatar
C*U
35
A是数列本身。。。。
用的是这道题目的思想
查找 一个数列中没有出现的最小正整数
那到题目用的O(n)时间 O(1) 空间。

【在 x*******1 的大作中提到】
: 不堪题目么, O(1)空间。 A 哪来的?
avatar
w*i
36
打电话问派出所了,说是不给办.

【在 c*******l 的大作中提到】
: 你是说这种情况无法办二代身份证?
: 我也是手里拿着户口卡,档案放人才。就不知怎样才能换身份证,现在国内一代身份证
: 基本没什么用了。上个月回去,强烈感觉没有二代身份证非常不方便。

avatar
l*a
37
我不知道你咋做的。
可是我似乎可以看到了三个一就结束了(如果输入正确的话)

【在 C***U 的大作中提到】
: 1,1,1,2,3,4,5.。。。
: 这个数组
: 一个1被放在A[0]
: 2被放在A[1]
: 3被放在A[2]
: 以此类推
: 做完这样以后
: 两个多余的1会被放在A[1000]和A[1001]

avatar
g*l
38
有什么不方便的?我的户口和档案都在北京的人才中心,2011年回去的时间,拿着存档
证去人才中心拿了户口卡,去派出所照相办身份证一点问题都没有。去办身份证的时间
,先照相,当场给一个临时身份证,三个月有效。拿着这个临时身份证什么都可以干。
回美国之前去把身份证取回来,把户口本给还回去就行了。身份证是20年有效期。

【在 e*p 的大作中提到】
: 理解。可是这种放人才的集体户口什么用都没有,跟真正的个人户口完全两码事。真办
: 个事还不方便,唯一的作用是给人才贡献存档费。

avatar
j*e
39
肯定能解,你只要做个loop,x从1到B-1,然后验证 (B-x)^x是否等于A.
问题是,有多个解:(


【在 x*******1 的大作中提到】
: A = x^y,
: B = x+y
: 能解出来么?呵呵, willing wish了。

avatar
e*p
40
回家办身份证不更快更方便?转回家不要钱,放在人才交钱,图啥?你这是规规矩矩都
放人才了,办身份证当然给办,lz那样的直接把单位集体户口卡拿手里不还了,比销户
还狠,销户还有记录能恢复呢。

【在 g***l 的大作中提到】
: 有什么不方便的?我的户口和档案都在北京的人才中心,2011年回去的时间,拿着存档
: 证去人才中心拿了户口卡,去派出所照相办身份证一点问题都没有。去办身份证的时间
: ,先照相,当场给一个临时身份证,三个月有效。拿着这个临时身份证什么都可以干。
: 回美国之前去把身份证取回来,把户口本给还回去就行了。身份证是20年有效期。

avatar
l*a
41
boolean[] check = new boolean[1002];

【在 c********r 的大作中提到】
: O(1)
avatar
e*p
42
北京10个工作日取证,周末办公:
http://www.bjgaj.gov.cn/web/gspdAction.do?method=getZwgkInfo&id

【在 a*****a 的大作中提到】
: 我现在也苦恼呢。当年把户口留北京集体户口,档案都放在那里,就要不断的交钱。
: 要移到老家,可是没办法移,要本人身份证
: 办理身份证必须本人到场,且还得去指纹,所以必须两次,中间间隔要3个星期,回国
: 哪里会这么幸运有这么长的假期还得待一个地方啊。

avatar
x*1
43
那肯定要swap了 , 找到然后swap, 那就不是O(n) 算法了。

【在 C***U 的大作中提到】
: A是数列本身。。。。
: 用的是这道题目的思想
: 查找 一个数列中没有出现的最小正整数
: 那到题目用的O(n)时间 O(1) 空间。

avatar
Y*o
44
借此地问一下。我也是集体户口,但是从单位取出来的时候,没有放人才,直接揣自己
兜里了。。。
然后就在我自己手里放了很多年,身份证到是有效的,这个怎么破呢?转回老家,有点
不甘心阿,当年办北京户口不容易啊。能在北京找个有房子的朋友落户朋友家么?
avatar
C*U
45
步骤是这样的
第一个遇到1 他放在了A[0] 所以不用变动。
第二个遇到1 然后和A[0]位置对比 发现一样 就不变动
第三个遇到1 然后和A[0]位置对比 发现一样 不动
第四个遇到2 然后放到A[1]上 A[1]上的1放到A[3]
第五个遇到3 依次类推
这样对不对?

【在 l*****a 的大作中提到】
: 我不知道你咋做的。
: 可是我似乎可以看到了三个一就结束了(如果输入正确的话)

avatar
a*0
46
揣你兜里相当于没有转出吧?
相当于你户口还在原单位吗?

【在 Y*******o 的大作中提到】
: 借此地问一下。我也是集体户口,但是从单位取出来的时候,没有放人才,直接揣自己
: 兜里了。。。
: 然后就在我自己手里放了很多年,身份证到是有效的,这个怎么破呢?转回老家,有点
: 不甘心阿,当年办北京户口不容易啊。能在北京找个有房子的朋友落户朋友家么?

avatar
m*t
48
那你那个有效身份证怎么办的?

【在 Y*******o 的大作中提到】
: 借此地问一下。我也是集体户口,但是从单位取出来的时候,没有放人才,直接揣自己
: 兜里了。。。
: 然后就在我自己手里放了很多年,身份证到是有效的,这个怎么破呢?转回老家,有点
: 不甘心阿,当年办北京户口不容易啊。能在北京找个有房子的朋友落户朋友家么?

avatar
d*e
49
他意思应该是说到第三个就结束了,就不需要再比下去了

【在 C***U 的大作中提到】
: 步骤是这样的
: 第一个遇到1 他放在了A[0] 所以不用变动。
: 第二个遇到1 然后和A[0]位置对比 发现一样 就不变动
: 第三个遇到1 然后和A[0]位置对比 发现一样 不动
: 第四个遇到2 然后放到A[1]上 A[1]上的1放到A[3]
: 第五个遇到3 依次类推
: 这样对不对?

avatar
b*a
50
问一下户籍证明和绿卡有关系么?除了出生证明还要户籍证明啊。。。
avatar
j*e
51
这样swap应该还是O(n),因为一个数只被swap一次就到对应的位置了,
然后loop扫到这个数时,检查一下就跳过这个数了。


【在 x*******1 的大作中提到】
: 那肯定要swap了 , 找到然后swap, 那就不是O(n) 算法了。
avatar
Y*o
52
我的身份证是转出之前就办了,有效期好像20年,离过期还很远

【在 m*****t 的大作中提到】
: 那你那个有效身份证怎么办的?
avatar
C*U
53
哦 好啊
但是对于一般的情况都应该是O(n)的
常数时间应该是不可能的

【在 d**e 的大作中提到】
: 他意思应该是说到第三个就结束了,就不需要再比下去了
avatar
Y*o
54
我也觉得这事情很奇葩,我走的时候,单位人事说让我去保卫科转出户口,我就去保卫
科,然后保卫科的人就把我那张卡从一沓户口卡中抽出来给我了。我看了下户口卡上,
只有转入单位的时间,也没有过期时间。

【在 a*0 的大作中提到】
: 揣你兜里相当于没有转出吧?
: 相当于你户口还在原单位吗?

avatar
l*a
55
if(a[abs(a[i])-1]<0)
{
abs(a[i]) is dup
}
else
{
a[abs(a[i])-1]*=-1;
}
不知到有没有更好的办法

【在 C***U 的大作中提到】
: 步骤是这样的
: 第一个遇到1 他放在了A[0] 所以不用变动。
: 第二个遇到1 然后和A[0]位置对比 发现一样 就不变动
: 第三个遇到1 然后和A[0]位置对比 发现一样 不动
: 第四个遇到2 然后放到A[1]上 A[1]上的1放到A[3]
: 第五个遇到3 依次类推
: 这样对不对?

avatar
e*p
56
国企吧,单位自己管户口。你这样的如果实在不想回原籍,其实可以不动,原单位只能
一直替你保管,直到你需要找他们用户口办事的时候再说。你当时如果已经迁出了,可
以挂人才,他们接收这种集体户口。如果你确实想得到所有户口的便利,要买个大产权
的房,然后转过去。不买房一直挂人才其实意思不大,身份证什么的给办,真正的便利
没有,不如回原籍。自己拿着集体户口卡是最错误的,什么都干不了,三不管。
挂靠亲戚要求是直系亲属,非直系的看你本事了。

【在 Y*******o 的大作中提到】
: 我也觉得这事情很奇葩,我走的时候,单位人事说让我去保卫科转出户口,我就去保卫
: 科,然后保卫科的人就把我那张卡从一沓户口卡中抽出来给我了。我看了下户口卡上,
: 只有转入单位的时间,也没有过期时间。

avatar
x*1
57
10, 1,9,2,8,3,7,4,6,5
多少次scan 多少次 能 变成
1,2,3,4,5,6,7,8,9,10

【在 j********e 的大作中提到】
: 这样swap应该还是O(n),因为一个数只被swap一次就到对应的位置了,
: 然后loop扫到这个数时,检查一下就跳过这个数了。
:

avatar
y*e
58
我的户口在原单位的集体户口,档案转刀人才中心,
前几天找人帮我问了一下,原单位要手10元一个月的管理费,和人才市场一样
avatar
c*r
59
我想空间复杂度的理解应该是,看运算使用的空间随n的变化而定吧,我的算法无论n=n
或者n=2n, 使用的空间都是一样大,请指正

【在 x*******1 的大作中提到】
: 10, 1,9,2,8,3,7,4,6,5
: 多少次scan 多少次 能 变成
: 1,2,3,4,5,6,7,8,9,10

avatar
c*l
60
我也是这种情况。
同问。

【在 Y*******o 的大作中提到】
: 借此地问一下。我也是集体户口,但是从单位取出来的时候,没有放人才,直接揣自己
: 兜里了。。。
: 然后就在我自己手里放了很多年,身份证到是有效的,这个怎么破呢?转回老家,有点
: 不甘心阿,当年办北京户口不容易啊。能在北京找个有房子的朋友落户朋友家么?

avatar
C*U
61
8次
加上数组过一遍时间10
总共18 < 2×10
我给你的那个链接你看一下吧
那里有code
应该能看出来时间是O(N)

【在 x*******1 的大作中提到】
: 10, 1,9,2,8,3,7,4,6,5
: 多少次scan 多少次 能 变成
: 1,2,3,4,5,6,7,8,9,10

avatar
Y*o
62
对,国企,是单位自己管户口的。我父母也说过,当初不应该转出来。但是我当时没有
想过那么多,让干啥我就干啥了。后来揣自己兜里,是因为出国前后那一年总要带着户
口卡办事情,放人才太麻烦。
买房子吧,一是买不起,二是我不在北京,买了也不好打理。我在国内也没啥亲人朋友
了,等父母百年之后,连原籍都不会回了。是不是就只能等着入籍后消户了吧。

【在 e*p 的大作中提到】
: 国企吧,单位自己管户口。你这样的如果实在不想回原籍,其实可以不动,原单位只能
: 一直替你保管,直到你需要找他们用户口办事的时候再说。你当时如果已经迁出了,可
: 以挂人才,他们接收这种集体户口。如果你确实想得到所有户口的便利,要买个大产权
: 的房,然后转过去。不买房一直挂人才其实意思不大,身份证什么的给办,真正的便利
: 没有,不如回原籍。自己拿着集体户口卡是最错误的,什么都干不了,三不管。
: 挂靠亲戚要求是直系亲属,非直系的看你本事了。

avatar
o*o
63
没看懂回帖。有那么复杂吗?
不就是
Sum(n) - Sum(1..1000) = x + y
Sum(n^2) - Sum(1^2..1000^2) = x^2 + y^2

【在 t*****2 的大作中提到】
: 1002个数, 数的范围是1到1000.
: 找出2个duplicate的数,要求Space O(1)

avatar
e*p
64
以后肯定入籍的话,别折腾了,反正也是销户.(不过你这状态销户似乎也有点问题?)如果
想折腾,当初拿户口卡不是办的迁出的话,跟原单位商量下再放回去;已经迁出的话找人
才,解释下为什么好几年没迁入,然后把几年的管理费补上.这么折腾的目的还是最终要
买房然后转个人户口,否则不如回原籍,简单省事.

【在 Y*******o 的大作中提到】
: 对,国企,是单位自己管户口的。我父母也说过,当初不应该转出来。但是我当时没有
: 想过那么多,让干啥我就干啥了。后来揣自己兜里,是因为出国前后那一年总要带着户
: 口卡办事情,放人才太麻烦。
: 买房子吧,一是买不起,二是我不在北京,买了也不好打理。我在国内也没啥亲人朋友
: 了,等父母百年之后,连原籍都不会回了。是不是就只能等着入籍后消户了吧。

avatar
C*U
65
有那么复杂么。。。要算2次方程
直接把数字放来放去就可以了

【在 o*o 的大作中提到】
: 没看懂回帖。有那么复杂吗?
: 不就是
: Sum(n) - Sum(1..1000) = x + y
: Sum(n^2) - Sum(1^2..1000^2) = x^2 + y^2

avatar
Y*o
66
多谢你的解释。我也不知道单位那保卫科靠谱不,我说要转出,他就把我那张户口卡直
接给我了。也没个转出证明啥的。 之后一年我拿着那户口卡办事也都没有问题。看来
我要回去问问了。多谢!

【在 e*p 的大作中提到】
: 以后肯定入籍的话,别折腾了,反正也是销户.(不过你这状态销户似乎也有点问题?)如果
: 想折腾,当初拿户口卡不是办的迁出的话,跟原单位商量下再放回去;已经迁出的话找人
: 才,解释下为什么好几年没迁入,然后把几年的管理费补上.这么折腾的目的还是最终要
: 买房然后转个人户口,否则不如回原籍,简单省事.

avatar
D*3
67

其实没多个解。
xy=a,x+y=b;
(x-y)^2=x^2+y^2-2xy=(x+y)^2-4xy=b*b-4a;
x-y= (+/-)sqrt(b*b-4a), 咱就说x-y= +/- k吧
注意,这时候看起来有2个解,其实基于x+y=b, 那么x-y=k和x-y=-k (i.e. y-x=k)是一
样的。因为x和y对称。
不信的话我解一下:
x+y=b, x-y=k --> x=(b+k)/2, y=(b-k)/2
x+y=b, y-x=k --> x=(b-k)/2, y=(b+k)/2
这两个式子的解对称,第一个的x就是第二的y。因为这题里求2个重复数。随便取一个
式子就能算出。
也就是说,两个重复数字分别是(b+k)/2,和(b-k)/2。其中k=sqrt(b*b-4a)。
ps1:我计算可能出点小错误,但是大意应该是对的。
ps2:有人说直接算xy,这样会overflow,想想1*2*...*1000多大吧。不如算1*1+2*2+.
..+x*x+...+y*y+...+1000*1000,这样减去1-1000的平方和,算出来x*x+y*y即可根据x+
y推出xy.

【在 j********e 的大作中提到】
: 这样swap应该还是O(n),因为一个数只被swap一次就到对应的位置了,
: 然后loop扫到这个数时,检查一下就跳过这个数了。
:

avatar
D*3
68

这里1000个数字还好,如果是n个数字,放来放去就要O(n) space了吧。

【在 C***U 的大作中提到】
: 有那么复杂么。。。要算2次方程
: 直接把数字放来放去就可以了

avatar
h*3
70
我理解cai的思路就是a[i]= i+1,
所以a[a[i]-1]=a[i];
过一遍以后最后2个值就是dup的了。
这题的思路和leetcode里面那个find missing positive的思路是一样。
没看他的程序,一看程序头就疼。
avatar
C*U
71
你理解对的

我理解cai的思路就是a[i]= i 1,所以a[a[i]-1]=a[i];过一遍以后最后2个值就是dup的
了。这题的思路和leetcode里面那个find missing p........
★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite

【在 h*****3 的大作中提到】
: 我理解cai的思路就是a[i]= i+1,
: 所以a[a[i]-1]=a[i];
: 过一遍以后最后2个值就是dup的了。
: 这题的思路和leetcode里面那个find missing positive的思路是一样。
: 没看他的程序,一看程序头就疼。

avatar
o*o
72
use sum and bit xor:
def printDup(arr, size):
xor = 0
sum = -(1+size-2)*(size-2)/2
for i in range(size):
sum += arr[i]
xor ^= arr[i]
if (i != 0 and i != size-1):
xor ^= i
xor ^= 0
if (xor == 0):
print "x=%s y=%s" % (sum/2, sum/2)
else:
x = 0
least = xor & ~(xor-1)
for i in range(size):
if (arr[i] & least):
x ^= arr[i]
if (i != 0 and i != size-1 and i & least):
x ^= i
x ^= 0
print "x=%s y=%s" % (x, y)

【在 t*****2 的大作中提到】
: 1002个数, 数的范围是1到1000.
: 找出2个duplicate的数,要求Space O(1)

avatar
h*3
73
我来说说吧,看说的对不对。
rule:a[i]=i+1
a(0)=10,swap a(9),a(0),a(9)=10,a(0)=5
swap a(4),a(0),a(4)=5,a(0)=8
swap a(7),a(0)...until a(0) is 1
check if a( 1) is 2,... 前面swap过的,基本上只是判断而已,因为已经满足了条件。

【在 x*******1 的大作中提到】
: 10, 1,9,2,8,3,7,4,6,5
: 多少次scan 多少次 能 变成
: 1,2,3,4,5,6,7,8,9,10

avatar
p*2
74

CAIWU是对的吧?

【在 C***U 的大作中提到】
: 算法和找最小的没有出现的正整数的算法一样
: 把i放到A[i-1]去,那么A[1000]和A[1001]就是重复的两个数
: 这样是O(n)时间,O(1)空间

avatar
C*U
75
需要2爷来认证啊

CAIWU是对的吧?
★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite

【在 p*****2 的大作中提到】
:
: CAIWU是对的吧?

avatar
g*s
76
这类题去年版上出现了很多次了。
avatar
p*2
77

我觉得是对的呀。

【在 C***U 的大作中提到】
: 需要2爷来认证啊
:
: CAIWU是对的吧?
: ★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite

avatar
p*2
78

去年还没上呀。大牛有什么想法share一下了。

【在 g***s 的大作中提到】
: 这类题去年版上出现了很多次了。
avatar
g*s
79
CAIWU在3楼就给了解法,那就是正解啊。
换i到a[i-1]位置上,最坏情况负责度也就是O(n).

【在 p*****2 的大作中提到】
:
: 去年还没上呀。大牛有什么想法share一下了。

avatar
o*o
80
整个数组的空间都被用了,还是O(1)?这跟拷贝数组有什么区别?
还不如LS贴的对数组元素取负做标志,最后还可以复原数组。

【在 C***U 的大作中提到】
: A是数列本身。。。。
: 用的是这道题目的思想
: 查找 一个数列中没有出现的最小正整数
: 那到题目用的O(n)时间 O(1) 空间。

avatar
p*2
81

多谢 大牛confirm,我也觉得这是正解。

【在 g***s 的大作中提到】
: CAIWU在3楼就给了解法,那就是正解啊。
: 换i到a[i-1]位置上,最坏情况负责度也就是O(n).

avatar
s*0
82
这样行不
如果要找的两个数不一样: a != b
可以转换为 2个(1...1000)的范围 + a + b
即一个数组只有两个数a, b 出现奇数次(3次),其他均为偶数次(这边为2次),找出a,b
然后按照经典XOR的方法处理
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。