博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-645-Set Mismatch
阅读量:6226 次
发布时间:2019-06-21

本文共 1248 字,大约阅读时间需要 4 分钟。

题目描述:

The set S originally contains numbers from 1 to n. But unfortunately, due to the data error, one of the numbers in the set got duplicated to another number in the set, which results in repetition of one number and loss of another number.

Given an array nums representing the data status of this set after the error. Your task is to firstly find the number occurs twice and then find the number that is missing. Return them in the form of an array.

Example 1:

Input: nums = [1,2,2,4]Output: [2,3]

 

Note:

  1. The given array size will in the range [2, 10000].
  2. The given array's numbers won't have any order.

 

要完成的函数:

vector<int> findErrorNums(vector<int>& nums) 

 

说明:

1、之前就做过一道类似的题目,给定一个长度为n的vector,里面原本要出现从1到n的所有元素,但是有一个元素没有出现,而有另一个元素出现了两次。要找出这个没有出现的元素。那道题目会做了,这道题目再加上异或的处理方法,也就能迅速得到答案。

之前类似题目的博文

 

2、所以我们使用了之前的方法,再加上异或的熟悉套路,构造如下代码:

vector
findErrorNums(vector
& nums) { int s1=nums.size(); int t,miss,p=0;for(int i=0;i
0) miss=i+1; } for(int i=0;i

上述代码由于改变了nums中的数值,所以最后还要再abs一次,这里做得不是很好。

在discuss区还看到了其他找到“没有出现的值”的方法,而不需要改变nums中的值,这样做会更好。同学们可以自己参照着看。

上述代码实测36ms,beats 96.45% of cpp submissions。

转载于:https://www.cnblogs.com/chenjx85/p/9022582.html

你可能感兴趣的文章
OO第一次博客作业
查看>>
计算机发展史简述
查看>>
wpf 遍历控件及其值
查看>>
Unity5.6.4f1 配置WebGL教程
查看>>
linux -硬盘分区
查看>>
Struts1防止重复提交
查看>>
JS控制滚动条的位置
查看>>
来自我的破船大大的博客,记录他的iOS成长之路,与君同勉!
查看>>
GridView 编辑、删除 、分页
查看>>
[洛谷P2742]【模板】二维凸包([USACO5.1]圈奶牛Fencing the Cows)
查看>>
C/C++动态二维数组的内存分配和释放
查看>>
HTC G7 官方ROM卡刷包(国行、台版、港版、印度、亚太版、欧版)
查看>>
jQuery笔记(五)jQuery表单验证
查看>>
编程助手JavaScript学习库-面向对象编程笔记
查看>>
聪明的数据结构和笨拙的逻辑代码
查看>>
php_memcache 缓存 下载-安装-配置-学习
查看>>
Java EE之通过表单上传文件
查看>>
Gnome创建桌面快捷方式
查看>>
机器人会偷走你的饭碗吗——药剂师 vs. 巨型药品包装机
查看>>
C++数据类型范围
查看>>