Q50 数组中重复的数字
题目描述
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。
# -*- coding:utf-8 -*-
class Solution:# 这里要特别注意~找到任意重复的一个值并赋值到duplication[0]# 函数返回True/Falsedef duplicate(self, numbers, duplication):# write code hereres = []for item in numbers:if item in res:duplication[0]=itemreturn Trueelse:res.append(item)return False
方法二:
排序 判断相邻位置是否存在相同数字
# -*- coding:utf-8 -*-
class Solution:# 这里要特别注意~找到任意重复的一个值并赋值到duplication[0]# 函数返回True/Falsedef duplicate(self, numbers, duplication):# write code herenumbers.sort()for i in range(len(numbers)-1):if numbers[i]==numbers[i+1]:duplication[0]=numbers[i]return Truereturn False
方法三:
链接:https://www.nowcoder.com/questionTerminal/623a5ac0ea5b4e5f95552655361ae0a8?answerType=1&f=discussion
来源:牛客网
数组的长度为 n 且所有数字都在 0 到 n-1 的范围内,我们可以将每次遇到的数进行"归位",当某个数发现自己的"位置"被相同的数占了,则出现重复。
扫描整个数组,当扫描到下标为 i 的数字时,首先比较该数字(m)是否等于 i,如果是,则接着扫描下一个数字;如果不是,则拿 m 与第 m 个数比较。如果 m 与第 m 个数相等,则说明出现重复了;如果 m 与第 m 个数不相等,则将 m 与第 m 个数交换,将 m “归位”,再重复比较交换的过程,直到发现重复的数 举个栗子:
以数组 {2,3,1,0,2,5,3} 为例
当 i = 0 时,nums[i] = 2 != i,判断 nums[i] 不等于 nums[nums[i]],交换 nums[i] 和 nums[nums[i]],交换后数组为:{1,3,2,0,2,5,3}
此时 i = 0,nums[i] = 1 != i,判断 nums[i] 不等于 nums[nums[i]],交换 nums[i] 和 nums[nums[i]],交换后数组为:{3,1,2,0,2,5,3}
此时 i = 0,nums[i] = 3 != i,判断 nums[i] 不等于 nums[nums[i]],交换 nums[i] 和 nums[nums[i]],交换后数组为:{0,1,2,3,2,5,3}
此时 i = 0,nums[i] = 0 = i,继续下一组
当 i = 1,nums[i] = 1 = i,继续下一组
当 i = 2,nums[i] = 2 = i,继续下一组
当 i = 3,nums[i] = 3 = i,继续下一组
当 i = 4,nums[i] = 2 != i,判断 nums[i] 等于 nums[nums[i]],出现重复,赋值返回
Q50 数组中重复的数字相关推荐
- 剑指offer: 面试题03. 数组中重复的数字
题目:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...
- 找出数组中重复的数字---多思路
问题:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...
- 数组-数组中重复的数字(set方法)
题意: 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任 ...
- leetcode-找出数组中重复的数字
找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...
- 剑指offer 面试题三 找出数组中重复的数字
1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...
- python --- 倒序输出数组中重复的数字
#coding=utf8 输出数组中重复的数字 #1.对比判断是否存在重复的数字,是则加入k:2.判断要加入的数字在k是否已存在,若已存在则跳过 def sum(L): for i in range( ...
- Python剑指offer:数组中重复的数字
题目一:找出数组中重复的数字 在一个长度为n的数组里的所有数字都在0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字.例如 ...
- Leetcode 剑指 Offer 03. 数组中重复的数字 (每日一题 20210614)
找出数组中重复的数字.在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复 ...
- LeetCode-剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字 思路一:先排序,然后找到最近的两个相邻的一样数返回 class Solution {public:int findRepeatNumber(vector&l ...
最新文章
- 第19章 解释器模式(Interpreter Pattern)
- 我这样写代码,比直接使用 MyBatis 效率提高了 100 倍
- ActionContext_、ValueStack、Stack_Context关系
- 拼接字符串的两种方式
- 将Java向前推进? 一个定义。 一年回顾。
- 手写 Object.create
- canvas 绘制直线 并选中_javascript自学记录:canvas绘图
- Android 四大组件之一(Activity)
- Codeforces Round #301 (Div. 2)
- ubuntu16.04安装nvidia-384
- php 开启 ziparchive,php ZipArchive类使用实例详解
- FFmpeg 转码压缩
- 徒手下载谷歌图书(google books)
- 转:组态软件测评∣WinCC、Citect、LabVIEW、InTouch、Ingnition,你更喜欢用哪个?
- W10笔记本电脑弄成WIFI
- pixel cra_cra到pwa
- 【专利】如何画专利流程图(逻辑图)
- 什么是MySQL数据空洞?
- 计算长方体体积(3分)
- PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码
热门文章
- linux下mysql5.6版本初始化数据库密码
- 西瓜书学习笔记第2章(模型评估与选择)
- Cassandra,NoSQL中的兰博基尼
- 差分时钟、DQS与DQM - DDRx的关键技术介绍
- DEV05 GBase 8a MPP Cluster 数据库性能优化
- 关于c / c++中power_bound的使用
- 【CSS】课程网站 Banner 制作 ① ( Banner 栏测量 | Banner 盒子模型代码 | 代码示例 )
- Origin 绘制分段函数图
- C1. Simple Polygon Embedding(几何)
- RN + Flutter