一道笔试题

playboy652 2007-08-02 10:31:59
有1-100的100个自然数,把他们放入a[99]中,用JAVA编写一段代码,找出哪个数没被放进去?
...全文
896 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
fiore 2007-08-03
  • 打赏
  • 举报
回复
递归效率不行
lovelycatty 2007-08-03
  • 打赏
  • 举报
回复
Mark
wu1393625405 2007-08-03
  • 打赏
  • 举报
回复
为什么没人用递归方法呢.是不好吗?
qwer1118 2007-08-03
  • 打赏
  • 举报
回复
放到一个类里面,怎么运行不了呢?>
malligator 2007-08-02
  • 打赏
  • 举报
回复
:(
should be:
public int findIt(int a[]){
int result = 0;
for(int i=0;i<a.length;i++){
result += (i+1-a[i]);
}

return result + a.length + 1;
}
malligator 2007-08-02
  • 打赏
  • 举报
回复
LS:)

public int findIt(int a[]){
int result = 0;
for(int i=0;i<a.length;i++){
result += (i-a[i]);
}

return result + a.length + 1;
}
eddychen 2007-08-02
  • 打赏
  • 举报
回复
在排好序的情况下,不知如下是否可行,望各位大哥多给意见
public int findInt(int a[]) {
int c=-1;
for(int i=1;i<a.length+1;i++) {
if(i!=a[i]) {
c=i;
i=(a.length+1)
}
}
if(c=-1) {
c=(a.length+1);
}
return c;
}
lzheng2001 2007-08-02
  • 打赏
  • 举报
回复
你怎么就知道1-100的和就是5050 ? 我稍为改一下需求的话比如100改500,上面说的方法就不适用了,事实上这是编程的大忌! 如果你是一个好的程序员,至少在上面的基础上修改一下, 忘记5050这个数字,你会怎么做?
mysqlaping 2007-08-02
  • 打赏
  • 举报
回复
我把上面的哥们的实现下。
public int findIt(int a[99]){
int sum = 0;
for(int i=0;i<99;i++){
sum += i;
}

return 5050 - sum;
}
也许还有其他算法:)
playboy652 2007-08-02
  • 打赏
  • 举报
回复
谢谢了哈,不过那次笔试的时候没做出来郁闷!
  • 打赏
  • 举报
回复
楼上的方法很好,在放入数组时就顺便求和。
webuilder 2007-08-02
  • 打赏
  • 举报
回复
计算出a[99]中所有数字的和A,然后 5050 - A就是那个没放进去的数字
hp5212000 2007-08-02
  • 打赏
  • 举报
回复
学习~
storm_huang 2007-08-02
  • 打赏
  • 举报
回复
楼上如果有10w个数的时候你自己看着办吧。

如果只是1个数字的话二楼的方法是可以,不过对于如果不是100其他的话可以改称sum=n*(n+1)/2。然后sum-A
如果是n个数字不在,可以考虑先把a[]按由大到小排序,设置一个m=1和f[n]然后遍历a查找。
public static int[] findInts(int[] a, int n) {
int len = a.length;
if (n - len <= 0) return null;
int[] f = new int[n - len];
a = sort(a);

int temp = 1;
for (int i = 0; i < len; i++) {
if(a[i] != i+temp){
f[temp-1] = i + 1;
temp++;
}
}
return f;
}
WTOJQY 2007-08-02
  • 打赏
  • 举报
回复
把它输出不就知道那个没放进去了吗?
yangjun210 2007-08-02
  • 打赏
  • 举报
回复
思路都够开阔.
chris_zley 2007-08-02
  • 打赏
  • 举报
回复
放完后,遍历一下数组,值为null的显示出来不就行了
chris_zley 2007-08-02
  • 打赏
  • 举报
回复
如果是多个数没放进去,怎么知道是哪些数没进去?
stromwin 2007-08-02
  • 打赏
  • 举报
回复
二樓的方向可行,但未必可靠
如果是兩個數沒有放進去呢?
jmslyz 2007-08-02
  • 打赏
  • 举报
回复
if (i<100) { 改成 if (i<a.length) {

楼主记得给分啊
加载更多回复(2)

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧