美文网首页
剑指 Offer 第3题: 数组中重复的数字

剑指 Offer 第3题: 数组中重复的数字

作者: 放开那个BUG | 来源:发表于2022-05-10 22:49 被阅读0次

1、前言

题目描述

2、思路

思路跟 leetcode 442 题一样。

3、代码

class Solution {
    public int findRepeatNumber (int[] numbers) {
        if(numbers == null || numbers.length == 0){
            return -1;
        }
        for(int i = 0; i < numbers.length; i++){
            if(numbers[i] < 0 || numbers[i] >= numbers.length){
                return -1;
            }
            while(numbers[i] != numbers[numbers[i]]){
                swap(numbers, i, numbers[i]);
            }
        }
        
        for(int i = 0; i < numbers.length; i++){
            if(i != numbers[i]){
                return numbers[i];
            }
        }
        return -1;
    }
    
    private void swap(int[] nums, int i, int j){
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}

相关文章

网友评论

      本文标题:剑指 Offer 第3题: 数组中重复的数字

      本文链接:https://www.haomeiwen.com/subject/txalyrtx.html