本篇博客会讲解力扣“面试题 17.04. 消失的数字”的解题思路,这是题目链接。

先来审题:

以下是输出示例:

下面我来讲解这道题效率最高的2种思路。

思路1

可以使用异或操作符。由于异或操作符满足以下2条规律:

  1. 多个数异或,任意交换顺序,结果不变。
  2. 0^n=n, n^n=0

所以可以这么想:在数组后面添加[0,n]的数据,那么除了消失的数字,其余数字都出现了2遍,当把这些数据都异或到一块去时,相同的数据都抵消了,只剩下孤零零的那个“消失的数字”。

具体的实现可以分2步:

  1. 异或数组中的元素。
  2. 异或[0,n]。

代码如下:

int missingNumber(int* nums, int numsSize){// 异或数组中的元素int ret = 0;for (int i = 0; i < numsSize; ++i){ret ^= nums[i];}// 异或[0,numsSize],即异或[1,numsSize]for (int i = 1; i <= numsSize; ++i){ret ^= i;}return ret;
}

这样就通过了。

思路2

消失的数组=(0+1+2+…+n)-(nums[0]+nums[1]+nums[n-1]),而(0+1+2+…+n)可以通过等差数列求和公式计算。代码如下:

int missingNumber(int* nums, int numsSize) {// 计算0+1+2+...+numsSize// 即计算1+2+...+numsSize// (首项+末项)*项数/2int ret = (1 + numsSize) * numsSize / 2;// ret依次减去数组中的元素for (int i = 0; i < numsSize; ++i){ret -= nums[i];}return ret;
}


这样也能通过。

总结

  1. 善用^操作符。
  2. 善于使用数学的方法,降低计算量。

感谢大家的阅读!

数字消失,思维升华——解密力扣“消失的数字”相关推荐

  1. x.509数字证书编码详解

    转自:http://blog.sina.com.cn/s/blog_49b531af0102eahs.html x.509数字证书编码详解 一. X.509数字证书的编码 X.509证书的结构是用AS ...

  2. bugku 杂项 就五层你能解开吗_你能解开这个和数字有关的逻辑解谜游戏吗? | 每日一考...

    今天是一道和数字有关的逻辑解谜游戏看看你能用多长时间得到答案这道题的目标是,把网格根据数字划分成很多个方形小块. 每个数字都代表它所在的小块面积,也就是包含了几个小格子,要求如下图,每个小块里必须有, ...

  3. 元宇宙技术普及读本重磅问世 详解十大技术 把脉数字经济 前瞻产业布局

    转自 元宇宙共识圈 王恩东.倪光南.沈昌祥.郑纬民--四位中国工程院院士联袂力荐 倪健中.姚前.李正茂.朱嘉明.肖风.敖然等权威专家一致推荐 汇聚元宇宙技术专家及产业一线佼佼者倾力撰写 元宇宙技术普及 ...

  4. python正则表达式提取数字比较好_python正则表达式从字符串中提取数字的思路详解...

    python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## ...

  5. 如何判断数字华容道中随机排列的数字阵列是否有解

    很多数字华容道游戏程序,用随机函数使NxN数字阵列中的数字随机排列.数学家已证明,在数字随机排列的数字阵列中,半数随机排列不能通过移动数字,使数字按顺序排列,称为"无解排列".博文 ...

  6. Python Tkinter——数字拼图游戏详解版

    Python Tkinter 实践系列--数字拼图游戏详解版 import random #Python中的random是一个标准库用于生成随机数.随机整数.还有随机从数据集取数据. import t ...

  7. Windows10蓝牙突然消失不见(设置中蓝牙开关键消失)

    问题:Windows10蓝牙突然消失不见(设置中蓝牙开关键消失) 电脑使用途中突然发现蓝牙突然消失不见,设置中蓝牙开关键消失,点击添加蓝牙设备显示蓝牙已关闭,提示更新驱动程序. 在windows更新中 ...

  8. C语言中的字符串转数字函数常见问题详解

    目录 C语言中的字符串转数字函数常见问题详解 字符串转整形 atoi函数 字符串转长整形 strtol函数, C语言中的字符串转数字函数常见问题详解 字符串转整形 atoi函数 函数原型: int a ...

  9. php 获取手机特征码,【新人学习】按键精灵获取数字特征码实例详解

    按键精灵获取数字特征码实例详解 运行环境:分辨率:1440x900 色深:32位 操作系统:Windows XP 按键精灵版本:7.00.3730 @兄弟工程师01未评2009/3/19//做这东西主 ...

最新文章

  1. 每日一皮:从项目的开始到结束,开发人员的变化...
  2. python的django介绍_【Python基础知识】Django框架简介
  3. FIFO分枝_限界算法
  4. 第二十三期:大规模网站架构?你是否熟悉?
  5. centos7 /etc/profile 文件模板
  6. java 访问路径_java获取项目访问路径的相关方法
  7. selenium使用send_keys()方法写中文报错的解决方法
  8. [swift] LeetCode 96. Unique Binary Search Trees
  9. 鸿蒙系统是华容网格吗,鸿蒙上手机还在迟疑,国内对手却已悄然来到
  10. 非华为PC安装华为电脑管家,免积分下载
  11. 计算机房电脑装软件,机房轻松批量安装软件
  12. 物联网嵌入式学习路线
  13. 年度最大促销,这家“娃界小米”要在双十一发大招
  14. 将蓝牙rssi(信号强度)转换成距离
  15. 开山斧 V0.3 WIN 版本
  16. 船舶物资与市场杂志船舶物资与市场杂志社船舶物资与市场编辑部2022年第7期目录
  17. 28335之GPIO输出
  18. flutter 实现切屏横竖屏切换
  19. 安信可TG-12F模组学习笔记 ① 在AliOS-Thing架构上快速开发实现一个天猫精灵插座。
  20. 装机员PE制作U盘启动视频教程

热门文章

  1. eclipse 大纲视图
  2. 完美解决小米6x没有busybox的方法
  3. 服务器是否有必要一定是SSD硬盘?使用SSD又有什么优缺点?
  4. 尽可能详细的文件上传讲解
  5. 10个你不知道的AirPods 2隐藏使用技巧
  6. 王砚峰揭秘搜狗AI技术体系:自然交互在左,知识计算在右,核心是语言丨MEET2020...
  7. httpUtils网络请求
  8. 行走的励志君——穷的时候需要记住的4点
  9. 拼多多放心推系统必须知道的规则!千万别错过
  10. 【DevFest 2020】Flutter Web 专场之夜总结来啦!