leetcode 268. 丢失的数字(Java版)
题目
https://leetcode-cn.com/problems/missing-number/
题解
解法 1
本题要求线性时间复杂度、仅使用额外常数空间的算法解决此问题,其实质是一个数学问题。
由于给定的数组本应包含从 0 到 n 范围内的所有数字,故可以将其看做一个首项为 0,尾项为length,步增为 1 的等差数列。
因此,求“缺项”的问题,可以转化为:先求等差数列前 n 项和,再减去已经存在的每一项 的问题。
本算法的时间复杂度为O(n)
,空间复杂度为O(1)
package test;public class Solution {public int missingNumber(int[] nums) {int sum = (0 + nums.length) * (nums.length + 1) / 2; // 等差数列求和for (int i = 0; i < nums.length; i++) {sum -= nums[i];}return sum;}
}
解法 2
好像和以前的一道题(只出现一次的数字)有异曲同工之处。看了大家的题解,异或操作(^
)是一种很好的方式,不用考虑 sum 越界问题。
举个例子:
0 ^ 4 = 4
4 ^ 4 = 0
那么,就可以不用求和,直接使用异或运算^
进行 抵消,剩下的数字就是缺失的了。
再举个例子:
1^1^2^2^3 = 3
代码:
int missingNumber(vector<int>& nums) {int res = nums.size();for (int i = 0; i < nums.size(); ++i){res ^= nums[i];res ^= i;}return res;
}
leetcode 268. 丢失的数字(Java版)相关推荐
- LeetCode Algorithm 268. 丢失的数字
268. 丢失的数字 Ideas 先排序,排完序之后如果不缺失数字的话,索引和值应该是相等的,所以我们只需要找到第一个索引和值不相等的元素就可以了,说明缺失的是索引代表的值. 如果找到最后发现都没有对 ...
- Leecode 268. 丢失的数字——Leecode每日一题系列
今天是坚持每日一题打卡的第十一天 题目链接:https://leetcode-cn.com/problems/missing-number// 题解汇总:https://zhanglong.blog. ...
- leetcode -874 - 模拟行走机器人 - java版
文章目录 题目 代码 题目 机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方.该机器人可以接收以下三种类型的命令: -2:向左转 90 度 -1:向右转 90 度 1 < ...
- 【leetcode刷题】72.6 和 9 组成的最大数字 ——Java版
⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 一行代码:第一次替换的,一定是最大的结果. --leetcode此题热评 前言 哈喽,大家好,我是一条. 糊涂算法,难得糊涂 点击 ...
- 来自北大算法课的Leetcode题解:268. 丢失的数字
代码仓库:Github | Leetcode solutions @doubleZ0108 from Peking University. 解法1(T45% S22%):排序,遍历数组序号,如果数组元 ...
- 力扣268.丢失的数字
解题思路 此题使用位运算较简单,根据异或运算,a^a=0,a^0=a 将nums全部元素异或,同时异或i即可得到不成对的数字,这就是丢失的那个数字 代码 int missingNumber(int* ...
- 力扣: 268. 丢失的数字
思路1: 用bool数组标记数字是否出现,输出没有出现的数字. 注意bool数组要比nums数组大1,防止少的是最后一个元素 int missingNumber(int* nums, int nums ...
- leetcode 506. 相对名次(Java版)
题目 https://leetcode-cn.com/problems/relative-ranks/ 题解 思路主要是,将运动员一开始的位置记录下来,方便颁奖的时候去指定位置颁给指定的人. 先用ma ...
- leetcode 455. 分发饼干(Java版)
题目 https://leetcode-cn.com/problems/assign-cookies/ 题解 先给两个数组从小到大排序.然后用双指针法: gIndex 表示 孩下标,sIndex 表示 ...
最新文章
- PHP 分布式集群中session共享问题以及session有效期的设置
- 快速学习使用springmvc、strust2、strust1以及它们的对比
- 本地创建分支push到github
- LINQ TO OBJECT
- MySQL集群之五大常见的MySQL高可用方案(转)
- ASP.NET调用WCF服务
- 轻松解决Mac和Windows中Unity汉化问题
- 黑马程序员, html css javascript 前端笔记 pink老师教程
- 2048小游戏——网页版(基础篇)
- 首台自主创新全空冷机组在三峡运行,图扑数字孪生机体
- Linux关于qt缺少xcb问题解决办法
- InnoDB下SQL执行底层原理和redolog、binlog
- echarts标题(title)设置背景图片
- 今日头条Go建千亿级微服务的实践
- (Note)阿克西斯ACASIS DT-3608双盘位硬盘阵列盒RAID设置
- 数据结构--堆Heap
- 图片头顶距离顶部百分比怎么修改_PS中,新手该怎么修改图像尺寸?看老师傅们都采用哪些方法?...
- How I Hacked Facebook with a Word Document
- 内网渗透之CFS三层靶场渗透
- lol更新显示正在连接服务器,lol提示无法连接服务器请检查你的网络并重新连接的解决方法...