数组中重复的数字_JAVA_中等

数组中重复的数字

http://www.nowcoder.com/questionTerminal/623a5ac0ea5b4e5f95552655361ae0a8

备忘录

  • 开辟新空间,值为n的存在下标为n+1的位置
  • 要开辟额外空间
public boolean duplicate(int numbers[],int length,int [] duplication) {
        if(numbers == null) {
            return false;
        }
        int[] cache = new int[length];
        // 备忘录记录
        for(int num : numbers) {
            if(cache[num] == 0) {
                cache[num] = 1;
            } else {
                duplication[0] = num;
                return true;
            }
        }
        return false;
    }

交换法

  • 从第一个开始,该值和下标不同就交换,相同就下一个,直到走完
  • 不能保证找出第一个最小值
 public boolean duplicate(int numbers[],int length,int [] duplication) {
        if(numbers == null) {
            return false;
        }
        int i = 0;
        while(i < length) {
            if(numbers[numbers[i]] != numbers[i]) {
               int temp = numbers[numbers[i]];
               numbers[numbers[i]] = numbers[i];
               numbers[i] = temp;
            } else if(i == numbers[i]){
                i++;
            } else {
                duplication[0] = numbers[i];
                return true;
            }
        }
        return false;
    }
全部评论

相关推荐

10-28 17:30
已编辑
华东交通大学 Java
想进开水团喝开水:字节的hr的本职工作就是黄金矿工
秋招笔试记录
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
秋招吐槽大会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务