题解 | #数组中重复的数字#

数组中重复的数字

http://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524

方法一:

方法二:

import java.util.*;

public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型一维数组 * @return int整型 */ public int duplicate (int[] numbers) { // write code here //方法二:利用数组下标来判断,是否有重复的数字 //利用数组numbers[i] = i,numbers[numbers.length - 1] = numbers.length-1 int n = numbers.length; //1~n-1 for(int i = 0; i < numbers.length; i++){ if(numbers[i] < 0 || numbers[i] >= n){ return -1; } }

    //利用下标 保证下标 == 元素值
    for(int i = 0 ; i < n ; i++){
        while(numbers[i] != i && numbers[numbers[i]] != numbers[i]){
            swap(numbers , i , numbers[i]);
        }
        
        if(numbers[i] != i && numbers[numbers[i]] == numbers[i]){
            return numbers[i];
        }
    }
    return -1;
} 
//交换数组中的两个元素
public void swap(int[] arr , int i , int j){
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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