首页 > 试题广场 >

只出现一次的数字

[编程题]只出现一次的数字
  • 热度指数:3233 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个整数数组,数组中有一个数出现了一次,其他数出现了两次,请找出只出现了一次的数。

数据范围:数组中元素个数满足 ,数组中的元素大小满足
示例1

输入

[1]

输出

1
示例2

输入

[1,2,2]

输出

1
示例3

输入

[2,3,2,1,1]

输出

3
示例4

输入

[-1,2,-1]

输出

2
根据异或的性质来做:
  1. 任何数异或上0都不会改变;
  2. 异或运算满***换律,即a^b=b^a;
  3. 两个相同的数异或得0,即a^a=0。
如此一来,我们就可以直接异或数组中所有的数,出现过两次的数碰到一起异或就直接都变成0了,整个数组异或完之后的结果,就是只出现一次的那个数。
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
    public int singleNumber (int[] nums) {
        // write code here
        int res = 0;
        for(int num: nums) res ^= num;
        return res;
    }
}

发表于 2021-12-10 17:02:45 回复(1)
见鬼了,有大佬知道为什么这个方法过不了最后一个用例吗
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @return int整型
     */
    public int singleNumber (int[] nums) {
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(nums[i])) {
                int value = map.get(nums[i]);
                map.put(nums[i], value + 1);
            } else {
                map.put(nums[i], 1);
            }
        }
        int result = -1;
        Set<Integer> set = map.keySet();
        for (int item : set) {
            int count = map.get(item);
            if (count == 1) {
                result = item;
                break;
            }
        }
        return result;
    }
}


发表于 2022-10-30 17:54:38 回复(1)
import java.util.*;


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

发表于 2022-08-29 15:24:55 回复(0)
//异或性质的利用
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
    public int singleNumber (int[] nums) {
        // write code here
        int ans=0;
        for(int num:nums){
            ans^=num;
        }
        return ans;
    }
}

发表于 2022-05-07 20:56:16 回复(0)
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @return int整型
#
class Solution:
    def singleNumber(self , nums: List[int]) -> int:
        # write code here
        num = 0
        for x in nums:
            num ^= x;
        return num

发表于 2022-03-26 14:46:31 回复(0)
int singleNumber(int* nums, int numsLen ) 
{
    // write code here
    int ret=0;
    for(int i=0;i<numsLen;i++)
    {
        ret^=nums[i];
    }
    return ret;
}

发表于 2022-03-15 17:22:59 回复(0)

import java.util.Arrays;
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String str=input.nextLine();
        String[]arr=str.split(" ");
        int[] numbers = new int[arr.length];
        for (int i = 0; i < numbers.length; i++) {
            numbers[i]=Integer.parseInt(arr[i]);
        }
        System.out.println(singleNumber(numbers));

    }
    public static int singleNumber (int[] array) {
        for (int i=0;i<array.length;i++){
            for (int j=i+1;j<array.length;j++) {
                if (array[i]==array[j]&&array[i]!=0&&array[j]!=0){
                    array[i]=0;
                    array[j]=0;
                }
            }
        }
        int n=0;
        for (int i = 0; i < array.length; i++) {
            if (array[i]!=0){
                n=array[i];
            }
        }
        return n;
    }
}
我吐了呀,超时了
有没有大佬帮我优化一下
发表于 2021-11-29 16:00:35 回复(1)

问题信息

难度:
7条回答 1192浏览

热门推荐

通过挑战的用户

查看代码