首页 > 其他 > 详细

算法题2

时间:2014-02-20 02:59:23      阅读:376      评论:0      收藏:0      [点我收藏+]
package test;
public class Arithmetic2 {
    public static void main(String[] args) {
        /*
        题设:现有0到99,共计100个整数,各不相同,将所有数放入一
            个数组,随机排布。数组长度100,将其中任意一个数替换
            成0到99另一个数(唯一重复的数字)
        问题:将这个重复的数字找出来
        */
           
        /*
         * 构造题设
         */
        int[] num = new int[100];
        for(int i=0;i<num.length;i++) {
            num[i]=i;
        }
        for(int i=0;i<10000;i++) {
            int num1 = (int)(Math.random()*100);
            int num2 = (int)(Math.random()*100);
            int temp = num[num1];
            num[num1] = num[num2];
            num[num2] = temp;
        }
        int n1 = (int)(Math.random()*100);
        int n2 = (int)(Math.random()*100);
        System.out.println("n1位置的数为:" + num[n1] + "\tn2位置的数为:" + num[n2]);
        num[n2] = num[n1];
        System.out.println("n1换位后数为:" + num[n1] + "\tn2换位后数为:" + num[n2]);
           
        /*
         * 解决方案
         */
        //方案一
        int num1 = 0;
        feng:
        for(int i=0;i<num.length;i++) {
            for(int j=i+1;j<num.length;j++) {
                if(num[i]==num[j]) {
                    num1 = num[i];
                    break feng;
                }
            }
        }
        System.out.println("通过方案一找出来的重复数字为:" + num1);
           
        //方案二
        int[] tempNum = new int[100];
        for(int i=0;i<num.length;i++) {
            if(tempNum[num[i]]==1) {
                System.out.println("通过方案二找出来的第一个数字为:" + num[i]);
            }else {
                tempNum[num[i]] = 1;
            }
        }
           
        //方案三
        int[] tempNum2 = new int[100];
        for(int i=0;i<num.length;i++) {
            tempNum2[num[i]]++;
            if(tempNum2[num[i]] == 2) {
                System.out.println("通过方案三找出来的第一个数字为:" + num[i]);
                break;
            }
        }
    }
}


算法题2

原文:http://rainday5.blog.51cto.com/6054509/1360386

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!