LeetCode136. 只出现一次的数字
1.力扣151. 反转字符串中的单词2.LeetCode515.在每个树行中找最大值3.LeetCode104.二叉树的最大深度4.LeetCode111.二叉树的最小深度
5.LeetCode136. 只出现一次的数字
6.LeetCode260. 只出现一次的数字 III7.LeetCode151. 反转字符串中的单词8.LeetCode225. 用队列实现栈9.LeetCode102.二叉树的层序遍历10.LeetCode107.二叉树的层序遍历II11.LeetCode199.二叉树的右视图12.LeetCode637.二叉树的层平均值13.LeetCode226. 翻转二叉树14.LeetCode455.分发饼干15.LeetCode860. 柠檬水找零16.LeetCode122. 买卖股票的最佳时机 II17.LeetCode1005. K 次取反后最大化的数组和18.LeetCode53. 最大子数组和19.LeetCode513. 找树左下角的值20.LeetCode135. 分发糖果21.LeetCode222.完全二叉树的节点个数22.LeetCode700. 二叉搜索树中的搜索23.LeetCode98. 验证二叉搜索树24.LeetCode530. 二叉搜索树的最小绝对差25.LeetCode654. 最大二叉树26.LeetCode617. 合并二叉树27.回溯算法介绍以及模板28.LeetCode216.组合总和lll29.LeetCode39. 组合总和30.LeetCode40.组合总和II31.动态规划方法论32.线性dp:编辑距离33.线性dp:大盗阿福(打家劫舍)34.LeetCode300.最长递增子序列35.线性dp:LeetCode674. 最长连续递增序列36.线性dp:LeetCode516 .最长回文子序列37.线性dp:LeetCode122.买卖股票的最佳时机ll力扣链接:https://leetcode.cn/problems/single-number/description/
题目叙述
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例 1 :
输入:nums = [2,2,1]
输出:1
示例 2 :
输入:nums = [4,1,2,1,2]
输出:4
示例 3 :
输入:nums = [1]
输出:1
提示:
1 <= nums.length <= 3 * 10^4
-3 * 10^4 <= nums[i] <= 3 * 10^4
除了某个元素只出现一次以外,其余每个元素均出现两次。
思路:
题目要求我们使用常量级别的额外空间来实现,故而使用哈希表来计数的方法被排除了,那么,我们还能去怎么做这道题目呢?——我们可以采用异或运算的性质
异或运算的性质
-
N^0=0 ,如何去解释呢?我们我都知道异或运算的规则是相同为0,不同则为1,那么我们一个数N,如果它的某一位为1,那么与0做异或,结果为1,如果这一位为0,那么与0做异或还是0,故而一个数与0做异或的结果就是它本身。
-
N^N=0,异或的运算规则是相同为0,不同为1,那么我们可以知道N和N做异或运算,它的每一位数字都相同,所以说每一位的运算结果都是0,那么结果一定也是0。
-
异或满足交换律和结合律
因为题目中说只有一个数字出现了一次,其余数字均出现了两次,那么我们只需要设置一个result
变量,初始化为0,对数组中的每一个元素都做一次异或运算,那么最后得到的结果一定是那个成单出现的数字
因为异或满足交换律,我们可以将成对的数字先进行异或操作,得到的结果为0,那么最后那个单个出现的数字,对0进行异或,结果就是那个数字
C++示例代码如下:
class Solution { public: int singleNumber(vector<int>& nums) { int result=0; //基于范围的for循环 for(auto &it :nums){ result^=it; } return result; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了