首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

找只出现一次的数字

这是力扣网站的一道题,挺巧妙的,分享给大家。

0x01. 题目

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

0x02. 示例

输入: [2,2,1]

输出: 1

输入: [4,1,2,1,2]

输出: 4

0x03. 答案

  使用异或实现找数组里面只出现一次的数字。

int singleNumber(vector& nums) {

int single = 0;

for (int num : nums) {

single ^= num;

}

return single;

}

0x04. 关于异或

满足交换律,如:

a ^ c ^ b

a ^ b ^ c

任何数与0异或得任何数,如:

0 ^ n => n

相同的数异或为0,如:

n ^ n => 0

最后数组[4,1,2,1,2]异或分解:

4 ^ 1 ^ 2 ^ 1 ^ 2

=>

4 ^ 1 ^ 1 ^ 2 ^ 2

=>

4 ^ 0 ^ 0

=>

4

0x05. 关于更多

  题目出处:

https://leetcode-cn.com/problems/single-number/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200803A0XDN000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券