美文网首页
剑指 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