题解 | #数组中重复的数字#
数组中重复的数字
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; } }
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 }