Leetcode 136. 只出现一次的数字

100 阅读1分钟

“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”

一、题目描述

  • 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

二、思路分析

  • 这是一道蛮有意思的题

  • 可以有两种思路,一种是hashmap去存取,另一种是按位异或

  • 这样如果是相同的数字就会消除

  • 最后剩下的那个数字就是单独的数字啦,此题,也是单独记忆即可没有什么难度

三、AC 代码:

class Solution {
    public int singleNumber(int[] nums) {
        //循环进行异或操作
        for(int i = 1;i<nums.length;i++){
            nums[0]^=nums[i];
        }
        //返回值就是只出现一次的数字
        return nums[0];
    }
}

四、总结:

  • 好了,代码撸完,我们总结一下
    • 首先我们肯定会想到用hashmap去解题,就还蛮简单的

    • 这里我们讲一下异或操作

    • 相同的数进行异或,最后会消除掉

    • 所以剩下来的就是我们要的,只出现一次的数字,有些取巧,并不难,不了解异或的可以查一下。

最后这个算法是Leetcode的第136题,是热题100里的题,去年我刷了热题100用时一个月左右,接下来我会继续更新,小伙伴可以点赞关注,如果你也在刷热题100的话,希望可以对你有一些启发!