黑马程序员技术交流社区

标题: 求分析这个题 [打印本页]

作者: 韩冬    时间: 2013-4-27 14:36
标题: 求分析这个题
1~100共一百个自然数,已随机放入一个有98个元素的数组a[98]。要求写出一个尽量简单的方案,找出没有被放入数组的那2个数,并在屏幕上打印这2个数。  这个小程序就是一个查找对比的过程吗?希望能得到程序段,或者简单程序思路分析也行的。谢谢
作者: 李德全    时间: 2013-4-27 14:55
先排序一下数组,然后前后挨着的元素相比较,是否差2或3。差2是缺的2数不连续,差3的是缺的两个数是连续的。当然要注意首尾两元素情况。
作者: 韩冬    时间: 2013-4-27 15:05
李德全 发表于 2013-4-27 14:55
先排序一下数组,然后前后挨着的元素相比较,是否差2或3。差2是缺的2数不连续,差3的是缺的两个数是连续的 ...

这样应该可以把,那这么说程序的最大工作量在于排序和对比数差而不是查找了。谢谢你
作者: wudongzhe    时间: 2013-4-27 15:40
我这里省略了 写了10个 少2个
        Integer[] i={4,5,1,2,6,8,9,10};
        Arrays.sort(i);
        List<Integer> list=Arrays.asList(i);
        for (int j =1; j <10; j++) {
                if(!list.contains(j)){
                        System.out.println(j);
                }
        }
作者: wudongzhe    时间: 2013-4-27 15:41
数组操作麻烦可以转换成集合做
作者: 李德全    时间: 2013-4-27 16:08
韩冬 发表于 2013-4-27 15:05
这样应该可以把,那这么说程序的最大工作量在于排序和对比数差而不是查找了。谢谢你 ...

嘻嘻 不会Java高级方法,只按照我现在的想法说的。如果有更好的方法要贴上来哦。:handshake
作者: 韩冬    时间: 2013-4-27 16:15
李德全 发表于 2013-4-27 16:08
嘻嘻 不会Java高级方法,只按照我现在的想法说的。如果有更好的方法要贴上来哦。 ...

我再研究下试试。应该还有步骤少的。
作者: 李德全    时间: 2013-4-27 17:03
韩冬 发表于 2013-4-27 16:15
我再研究下试试。应该还有步骤少的。

想到有一个不需要排序的,新定义一个数组int[] A  遍历98元素的数组B,把B元素值-1作为A数组的下标,并把该下标对应的元素赋值1(随便什么值,不是0就行)。遍历完B后,遍历A,A中元素值为0的下标+1就是所要求的。

作者: harborbest    时间: 2013-4-27 17:11
提供个思路:
1,首先生成100个不相同的随机整放入一个集合。
2,然后把这些集合中的整数放到一个98大的数组中,那么集合中就会剩下2个整数。
3,然后这个数组中的数拿出来和这个集合中的数进行比对,集合中有的数组中没有的就是要找的俩个数!
作者: Miss小强    时间: 2013-4-27 18:30
思路:将这个98个元素的数组存入到HashSet集合中;
然后在试着将1-100这100个数放入集合中,看哪俩个可以放进去,就是那两个了
作者: 逍林游    时间: 2013-4-28 22:03
{:soso_e113:}
作者: 黄玉昆    时间: 2013-4-28 22:53

如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2