找出那只单身狗:

正文开始@Assassin

目录:

  • 找出那只单身狗:
    • 1. 题目描述:
    • 2. 思路:
      • 2.1 异或的基本概念:
        • 2.1.1 符号表示:
        • 2.1.2 运算规则:
        • 2.1.3 异或的性质:
    • 3. 题解:
    • see you next blog~~

1. 题目描述:

给定一个只包含整数的有序数组nums ,每个元素都会出现两次,唯有一个数只会出现一次,请找出这个唯一的数字。

  • 示例 1:
    输入: nums = [1,1,2,3,3,4,4,8,8]
    输出: 2

  • 示例 2:
    输入: nums = [3,3,7,7,10,11,11]
    输出: 10

来源:力扣(LeetCode)
点我跳转到leetcode!!

2. 思路:

这道题用异或的思路是最优解~~

这里先简单介绍一下异或的概念:

2.1 异或的基本概念:

2.1.1 符号表示:

异或是一种二进制的位运算,符号以 XOR 或 ^ 表示。也就是本质上是按二进制位异或。

2.1.2 运算规则:

按照二进制位相同为0,不同为1,即:

1 ^ 1 = 0
0 ^ 0 = 0
1 ^ 0 = 1

由运算规则可知,任何数与0异或,都会等于其本身,即 0 ^ A = A。
任何数与其本身异或,都会等于0,即 A ^ A = 0。

2.1.3 异或的性质:

(1)交换律: A ^ B = B ^ A(2)结合律: ( A ^ B ) ^ C = A ^ ( B ^ C )(3)自反性: A ^ B ^ B = A (由结合律可推: A ^ B ^ B = A ^ ( B ^ B ) = A ^ 0 = A)

话不多说,我们干正事儿~~

3. 题解:

提示: 使用位操作符异或可以快速找出单独的数字,两个相同数字异或为零,零与任何数字异或为本身,这样便可以达到排除偶数次重复的操作。

int singleNonDuplicate(int* nums, int numsSize){    int ret=0;//保存结果for(int i=0;i<numsSize;++i){ret^=nums[i];//依次遍历异或数组中的每一个数,最终剩下的便是单身狗}return ret;
}

时间复杂度为O(n)

see you next blog~~

剑指 Offer II 070. 排序数组中只出现一次的数字相关推荐

  1. 剑指offer面试题[40]-数组中只出现一次的数字

    题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 注意原题目要求空间复杂度为0(1). 位运算的具体思路可以参看剑指offer. class So ...

  2. 剑指 Offer II 006. 排序数组中两个数字之和

    由于题目中数组已经排好序,所以可以用双指针 双指针: i=0,j=nums.size( )-1 当 i<j 时循环,当目标小于target时i++,当目标大于target时,j-- 当目标小于t ...

  3. 【剑指offer-Java版】40数组中只出现一次的数字

    数组中只出现一次的数字:输入一个数组,该数组中有两个数字只出现了一次,其他数字都出现了两次,求出这两个只出现了一次的数字 要求时间复杂度为O(n)空间复杂度为O(1) 考虑一个数组中只有一个数字仅仅出 ...

  4. 剑指offer:二维数组中的查找

    目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺 ...

  5. 利用指针数组计算2个3行4列矩阵的和_[剑指 Offer] 04. 二维数组中的查找

    难度:简单 题目链接:剑指 Offer 04. 二维数组中的查找 题目描述: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, ...

  6. 剑指 Offer 04. 二维数组中的查找

    剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个 ...

  7. 【LeetCode】剑指 Offer 04. 二维数组中的查找

    [LeetCode]剑指 Offer 04. 二维数组中的查找 文章目录 [LeetCode]剑指 Offer 04. 二维数组中的查找 package offer;public class Solu ...

  8. 剑指 Offer II 049. 从根节点到叶节点的路径数字之和

    剑指 Offer II 049. 从根节点到叶节点的路径数字之和: 题目链接 :剑指 Offer II 049. 从根节点到叶节点的路径数字之和 题目: 给定一个二叉树的根节点 root ,树中每个节 ...

  9. [剑指Offer]5.二维数组中的查找

    题目 在一个二维数组中,每一行都依照从左到右递增的顺序排序,每一列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个二维数组和一个整数.推断数组中是否含有该整数. 思路 [算法系列之三十三]杨 ...

最新文章

  1. 链接3: SQL语句教程
  2. 六年磨一剑,全时发布音视频会议平台TANG,多款新品亮相
  3. MPB:军科院杨瑞馥、毕玉晶等-​​培养组学方法优化(视频)
  4. 代码实践 | CVPR2020——AdderNet(加法网络)迁移到检测网络(代码分享)
  5. java string转number_Java 序列化
  6. SQL统计指定的一列多少种取值
  7. Unity预计算全局实时GI(gi params)
  8. 论文笔记(SocialGCN: An Efficient Graph Convolutional Network based Model for Social Recommendation)
  9. oracle ndv,CBO_ORACLE
  10. Codeforces Gym101518H:No Smoking, Please(最小割)
  11. face.evoLVe:高性能人脸识别开源库,内附高能模型
  12. zoj 1406 Jungle Roads
  13. 解决 SmallPDF 联网验证和试用期过期问题
  14. Spring+Hibernate 零散知识点
  15. 车载双目相机,老兵的二次出征
  16. 案例|工业物联网解决方案·光伏电站
  17. 网络视频会议软件哪个好?欢迎大家补位!
  18. WEB自动化学习路线(转载)
  19. 标鸽知产商标自助注册流程
  20. linux系统日志排故方案,Linux系统故障排查思路与常见案例

热门文章

  1. 印度打车软件Ola将登陆伦敦,或将取代被吊销伦敦执照的Uber
  2. 华为发布The New P30 Pro新机:全新配色+EMUI10系统
  3. 真无线蓝牙耳机霸主之争:苹果AirPods和索尼WF-1000XM3怎么选?
  4. 索尼PS5突然“上架”?预购价约7244元...
  5. 新一季“十大最堵互联网公司”出炉:360百度腾讯跻身三甲
  6. 雅迪发布高端智能电动车G5 这个售价真的会有人买吗?
  7. 苹果锤完Facebook 又轮到谷歌了
  8. 内核模块编程之_初窥门径【ZT】
  9. java让两个线程交替_java两个线程实现: 两个线程交替打印字母和数
  10. 屏幕旋转后_网易哒哒H5又又叒刷屏了,TCL·XESS 旋转智屏竟然是一大亮点