栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

27 力扣热题刷题记录之第136题只出现一次的数字

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

27 力扣热题刷题记录之第136题只出现一次的数字

系列文章目录

力扣热题刷题记录

文章目录

系列文章目录前言一、背景二、我的思路

1.暴力求解(超时)2.sort排序3.map或unordered_map 三、官方的思路

1.异或运算(二进制位) 总结

前言

每天进步一点点!!

一、背景

来源:力扣
链接:https://leetcode-cn.com/problems/single-number/

二、我的思路

分析题目:除了一个元素落单,其它元素都有仅有一个对象。

1.暴力求解(超时)
class Solution {
public:
    int singleNumber(vector& nums) {
        //暴力求解
        bool flag=false;
        for ( int i=0;i 
2.sort排序 

尤其考虑元素个数只有一两个的特殊情况,不然会出现数组溢出的情形。

class Solution {
public:
    int singleNumber(vector& nums) {
        //忘记了最简单的排序了,噗

        sort(nums.begin(),nums.end() );
        if(nums.size()==1)
            return nums[0];
        else if(nums.size()>=2)
        {
            if(nums[0]!=nums[1])
                return nums[0];
            if(nums[nums.size()-1]!=nums[nums.size()-2])
                return nums[nums.size()-1];
        }
        
        for ( int i=1;i 
3.map或unordered_map 

不排序的map更快!!!

class Solution {
public:
    int singleNumber(vector& nums) {
        //用map统计次数
        unordered_map record;
        for ( int i=0;isecond==1)
            {
                return it->first;
            }
        }
        return 0;
    }
};
三、官方的思路 1.异或运算(二进制位)

核心:

class Solution {
public:
    int singleNumber(vector& nums) {
        //借鉴某网友的思路
        //所有的数进行异或操作,重复的数异或得0,而0与任何数异或保留原值
        int ans=0;
        for(int i:nums)
        {
            ans ^=i;//异或操作
        }
        return ans;
    }
};
总结

方法多多,但是最巧妙那个,想不到艾!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/744265.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号