• 数组中重复的数字


    题目:找出数组中重复的数字

      在一个长度为n的数组里的所有数字都在0~n-1的范围内,数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次,请找出数组中任意一个重复的数字,例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复数字2或者3

      解题思路:遍历数组,比如当第一个数字为2,就将这个数字换到下标为2的位置上去,于是{1,3,2,0,2,5,3},第一个下标与对应的数字仍不相等,继续交换{3,1,2,0,2,5,3},继续交换{0,1,2,3,2,5,3},可以看到前四位已经对应,直到遍历到第五位,也就是下标为4的时候,如果当前下标对应的值等于该值作为下标后的值,那么就出现重复数字了。

      代码如下:

        

    public static int duplicate(int[] num){
            int temp=num.length;//当返回的temp=数组大小的时候,说明该数组不存在重复值
            for (int i = 0; i <num.length ; i++) {
                while (num[i]!=i){
                    if (num[i]==num[num[i]]){//该值等于该值作为下标的值,重复 
                        temp=num[i];
                        break;
                    }
                    //将该值与该值作为下标的值对换
                    int temp1=num[i];
                    num[i]=num[temp1];
                    num[temp1]=temp1;
                }
            }
            return temp;
        }
  • 相关阅读:
    访问者模式
    解释器模式
    享元模式
    职责链模式
    中介者模式
    单例模式
    桥接模式
    命令模式
    迭代器模式
    Python 学习笔记15 类
  • 原文地址:https://www.cnblogs.com/yeleia/p/9888086.html
Copyright © 2020-2023  润新知