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

数组中重复的数字

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

1.python 解法:从第一个元素开始执行pop 然后查询是否仍然有这个元素,空间复杂度O(n)
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param numbers int整型一维数组 
# @return int整型
#
class Solution:
    def duplicate(self , numbers ):
        # write code here
        numbers.sort()
        for k in range(len(numbers)-1):
            if numbers[k] == numbers[k+1]:
                return numbers[k]
        return -1

2.java解法:使用set
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param numbers int整型一维数组 
     * @return int整型
     */
    public int duplicate (int[] numbers) {
        // write code here
        Set<Integer> num = new HashSet<Integer>();
        for(int i = 0; i < numbers.length; i++){
            if(num.contains(numbers[i])){
                return numbers[i];
            }
            else{
                num.add(numbers[i]);
            }
        }
        return -1;
    }
}

3.go解法,构建map
package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param numbers int整型一维数组 
 * @return int整型
*/
import "fmt"
func duplicate( numbers []int ) int {
    // write code here
    nums := make(map[int]int)
    fmt.Println(nums)
    for _,num := range numbers{
//         count := nums[num]
//         fmt.Println(nums[num])
//         fmt.Println(count)
        if nums[num] == 1{
            return num
        }
        nums[num] = 1
    }
    return -1
}



全部评论

相关推荐

评论
2
1
分享
牛客网
牛客企业服务