题目链接

  • 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_数组中重复的数字相关推荐

  1. 剑指offer: 面试题03. 数组中重复的数字

    题目:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...

  2. 找出数组中重复的数字---多思路

    问题:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...

  3. 数组-数组中重复的数字(set方法)

    题意: 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任 ...

  4. leetcode-找出数组中重复的数字

    找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...

  5. 剑指offer 面试题三 找出数组中重复的数字

    1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...

  6. python --- 倒序输出数组中重复的数字

    #coding=utf8 输出数组中重复的数字 #1.对比判断是否存在重复的数字,是则加入k:2.判断要加入的数字在k是否已存在,若已存在则跳过 def sum(L): for i in range( ...

  7. Python剑指offer:数组中重复的数字

    题目一:找出数组中重复的数字 在一个长度为n的数组里的所有数字都在0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字.例如 ...

  8. Leetcode 剑指 Offer 03. 数组中重复的数字 (每日一题 20210614)

    找出数组中重复的数字.在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复 ...

  9. LeetCode-剑指 Offer 03. 数组中重复的数字

    剑指 Offer 03. 数组中重复的数字 思路一:先排序,然后找到最近的两个相邻的一样数返回 class Solution {public:int findRepeatNumber(vector&l ...

最新文章

  1. 一场高质量的技术盛会怎样炼成?「2019中国大数据技术大会」蓄势待发,还不快上车?...
  2. 世界无人帆船大赛首次登陆中国,水手梦也能用代码实现
  3. Bluetooth GAP介绍
  4. 建智能工厂,可从这6个方面着手!
  5. python字符串补空格输出_python格式化打印字符串
  6. java hashtable 并发_Java 并发容器 —— Hashtable 与 Collections.synchronizedMap(HashMap) 的区别...
  7. 全国80几所重点大学ftp资源库(经常逛逛可能有惊喜哦)很难收集的,知道其他的友友可以留言完善...
  8. Linux创建文件【命令】
  9. 2017.9.28 CF #R2 B 思考记录
  10. 奖金(拓补排序的应用)
  11. python内建模块函数_Python中一些内建函数及os等模块的用法
  12. Centos5安装Dell OpenManage Server Administrator
  13. 【Flask】 结合wtforms的文件上传表单
  14. 2011下半年信息系统项目管理师考后感
  15. jq 获取父元素html,jq获取父级元素_使用jquery获取父元素或父节点的方法
  16. Python3 requests 12306查票模块
  17. 01. Web漏洞靶场的搭建
  18. Tmp112数字温度传感器
  19. (4)高通AP10.4开发者指南——WLAN(1.4 Offload和direct-attach两种模式下驱动的模块化)
  20. 从苏宁电器到卡巴斯基(后传)第01篇:讲讲我写完那36篇故事之后的一些事

热门文章

  1. C++封装dll供C#调用获取U盘/磁盘序列号信息
  2. 一道十分经典的intern面试题(String字符串)让你彻底搞懂intern方法
  3. Android Things:外设I/O接口-PWM
  4. vmware16中win7虚拟机怎么设置全屏显示
  5. 大数据工程师需要学习哪些?
  6. 店铺定位目的,品牌传播,产品、人群、价格定位
  7. .Net 优秀的开源框架整理
  8. java aes 工具类_Java中的AES加解密工具类:AESUtils
  9. Flutter CircularProgressIndicator进度指示器/Loading
  10. 支付宝支付 62009