一道面试智力题目。 1--100000 数列按一定顺序排列,有一个数字排错,如何纠错?写出最好 方法。两个数字呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 方法1.int temp=0;int[]a={1,2,....10000};for(int i=1;i<=1000;i++){ for(int j=i+1;j<=1000;){ if(a[i]<a[j]){ temp=a[i]; a[i]=a[j]; a[j]=temp; } } }方法2:用java.util.arrays 类的方法! int[]a={1,2,....10000}; for(int i=0;i<a.length-1;i++){ if(a[i]>a[a[i+1]]){ System.out.println(a[i]); break; }} arrays和system.arrayCopy()聪明人看的出来这个是好的方法! arrays.sort();先排序,再new一个按顺序存储的1--100000的数组,再拿这两个数组比较,compare一下就找出了哪些数字不相同。 支持一下,java的意义就在于充分利用已有库函数~ int[] tes={那个数组};for(int i=0;i<100000;i++){ if((tes[i+1]-tes[i])==1){ System.out.println(tes[i]+"后面的数字:"+tes[i+1]+"排错了吧."); }} 三星移动创新者园地全新改版,真正为手机软件开发者提供帮助,谋福利。http://innovatorsamsungmobile.com/71 提供资源:1、 常用源代码样例库。2、 三星用户达八千九百万,市场份额占据第二位,存在巨大的商机。3、 三星专用SDK、API、新功能指导建议,集中的机型适配所需资源。4、 工程师答疑,帮助解决开发中的疑难杂症。5、 免费远程真机测试—远程互联网预约挂在网上的真机,上传软件测试,机型丰富。6、 三星在线商店,机器预装,帮你推销软件。让你轻松赢得第一桶金。 按一定顺序排列,可没说是降序还是升序,或者另外的顺序.看来只能是相邻位置错误算排错.拿22楼例子来讲:应该是 12345,排成了142356.亦即只需移动一个数字的位置(这里是4),就可以排成正确序列.设有函数f(x,y)判定x是否该放到y前方.如f(1,2)=true, f(1,5)=true, f(5,4)=false那么从1到N遍历,找出第一个让f(x1,x2)=false的数x1,有两种可能: 1)本该在x1之前的数x1'被移动到后方2)本该在后方的x1被移动到前方如果x1与后方近邻元素关系为true,那么显然是第1)中情况.找出第二个f为false的数就是答案.否则为2),x1即为答案.算法时间复杂度O(N)2个数被排错情况比较复杂,分多种情况讨论.楼下来解答吧. 上头分析优点小毛病,出现false的该是x1左边的数x0,其他判定没问题. 正则,取出指定部分的字符串 又是一个复合赋值运算与简单赋值问题 环境变量的选择问题 及 引用第三方开发包 使用poi对word进行操作的问题 java 做界面的问题2 求助--- 哪位老兄有写好的jTable范例?? 怎样才能设置IP地址? 这个问题困扰我3个月了,就是无法解决,谁如果能帮我,我将追加500分!!!!!!!!!! 高手、高手看进来!!! 面试小问题 希望得到前辈的指导,分不够还可以再加! 一个简单的JAVA 小程序?
int temp=0;
int[]a={1,2,....10000};
for(int i=1;i<=1000;i++){
for(int j=i+1;j<=1000;){
if(a[i]<a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
方法2:用java.util.arrays 类的方法!
for(int i=0;i<a.length-1;i++){
if(a[i]>a[a[i+1]]){
System.out.println(a[i]);
break;
}
}
先排序,再new一个按顺序存储的1--100000的数组,
再拿这两个数组比较,compare一下就找出了哪些数字不相同。
for(int i=0;i<100000;i++){
if((tes[i+1]-tes[i])==1){
System.out.println(tes[i]+"后面的数字:"+tes[i+1]+"排错了吧.");
}
}
提供资源:
1、 常用源代码样例库。
2、 三星用户达八千九百万,市场份额占据第二位,存在巨大的商机。
3、 三星专用SDK、API、新功能指导建议,集中的机型适配所需资源。
4、 工程师答疑,帮助解决开发中的疑难杂症。
5、 免费远程真机测试—远程互联网预约挂在网上的真机,上传软件测试,机型丰富。
6、 三星在线商店,机器预装,帮你推销软件。让你轻松赢得第一桶金。
看来只能是相邻位置错误算排错.
拿22楼例子来讲:
应该是 12345,排成了142356.亦即只需移动一个数字的位置(这里是4),就可以排成正确序列.
设有函数f(x,y)判定x是否该放到y前方.如f(1,2)=true, f(1,5)=true, f(5,4)=false
那么从1到N遍历,找出第一个让f(x1,x2)=false的数x1,
有两种可能:
1)本该在x1之前的数x1'被移动到后方
2)本该在后方的x1被移动到前方
如果x1与后方近邻元素关系为true,那么显然是第1)中情况.找出第二个f为false的数就是答案.
否则为2),x1即为答案.
算法时间复杂度O(N)2个数被排错情况比较复杂,分多种情况讨论.楼下来解答吧.