LeetCode_1677_数组中重复的数字
题目链接
- https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/
解题思路
- 暴力法:遍历数组中的每个元素,然后在剩下的元素中寻找是否存在相同的元素。时间复杂度O(n2)O(n^2)O(n2)
- 哈希表:初始化一个哈希表然后遍历每一个元素
- 先判断哈希表中是否存在这个元素
- 如果存在,则说明这个元素重复,直接返回
- 否则,将这个元素加入到哈希表中,方便后续的判重
- 时间复杂度O(n),空间复杂度O(n)
- (大佬的解法)原地置换:如果没有重复数字,那么正常排序后,数字
i
应该在下标为i
的位置- 从头开始扫描数组,遇到下标为
i
的数字如果不是i
的话,假设为m,那么就拿下标m的数字交换 - 在交换过程中,如果有重复的数字发生,那么终止返回
true
- 时间复杂度O(n),空间复杂度O(1)
- 从头开始扫描数组,遇到下标为
AC代码
//暴力法
class Solution {public int findRepeatNumber(int[] nums) {int len = nums.length;for (int i = 0; i < len; i++) {for (int j = i + 1; j < len; j++) {if (nums[i] == nums[j])return nums[i];}}return -1;}
}
//哈希表法
class Solution {public int findRepeatNumber(int[] nums) {Set<Integer> set = new HashSet<>();for (int num : nums) {if (set.contains(num))return num;set.add(num);}return -1;}
}
//原地置换法
class Solution {public int findRepeatNumber(int[] nums) {for (int i = 0; i < nums.length; i++) {while (i != nums[i]) {if (nums[i] == nums[nums[i]])return nums[i];int tmp = nums[nums[i]];nums[nums[i]] = nums[i];nums[i] = tmp;}}return -1;}
}
LeetCode_1677_数组中重复的数字相关推荐
- 剑指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 ...
最新文章
- 一场高质量的技术盛会怎样炼成?「2019中国大数据技术大会」蓄势待发,还不快上车?...
- 世界无人帆船大赛首次登陆中国,水手梦也能用代码实现
- Bluetooth GAP介绍
- 建智能工厂,可从这6个方面着手!
- python字符串补空格输出_python格式化打印字符串
- java hashtable 并发_Java 并发容器 —— Hashtable 与 Collections.synchronizedMap(HashMap) 的区别...
- 全国80几所重点大学ftp资源库(经常逛逛可能有惊喜哦)很难收集的,知道其他的友友可以留言完善...
- Linux创建文件【命令】
- 2017.9.28 CF #R2 B 思考记录
- 奖金(拓补排序的应用)
- python内建模块函数_Python中一些内建函数及os等模块的用法
- Centos5安装Dell OpenManage Server Administrator
- 【Flask】 结合wtforms的文件上传表单
- 2011下半年信息系统项目管理师考后感
- jq 获取父元素html,jq获取父级元素_使用jquery获取父元素或父节点的方法
- Python3 requests 12306查票模块
- 01. Web漏洞靶场的搭建
- Tmp112数字温度传感器
- (4)高通AP10.4开发者指南——WLAN(1.4 Offload和direct-attach两种模式下驱动的模块化)
- 从苏宁电器到卡巴斯基(后传)第01篇:讲讲我写完那36篇故事之后的一些事
热门文章
- C++封装dll供C#调用获取U盘/磁盘序列号信息
- 一道十分经典的intern面试题(String字符串)让你彻底搞懂intern方法
- Android Things:外设I/O接口-PWM
- vmware16中win7虚拟机怎么设置全屏显示
- 大数据工程师需要学习哪些?
- 店铺定位目的,品牌传播,产品、人群、价格定位
- .Net 优秀的开源框架整理
- java aes 工具类_Java中的AES加解密工具类:AESUtils
- Flutter CircularProgressIndicator进度指示器/Loading
- 支付宝支付 62009