Leetcode--287. 寻找重复数
初始化mask:我们使用一个整数mask来记录已经遇到过的数。 遍历数组:对于数组中的每个数num,我们检查mask的第num-1位是否为1。如果是,说明num已经被遇到过,因此返回num。 设置位:如果num还没有被遇到过,我们将mask的第num-1位设置为1,继续下一个数。
发布日期:2021-04-30 21:01:25
浏览次数:116
分类:精选文章
本文共 877 字,大约阅读时间需要 2 分钟。
要解决这个问题,我们需要找到一个数组中唯一重复的整数。数组中包含n+1个整数,这些整数都在1到n之间。根据鸽巢原理,至少有一个数重复出现。我们需要一个高效的方法来找出这个重复的数。
方法思路
我们可以使用位操作来解决这个问题。具体来说,我们可以使用一个整数来记录已经遇到过的数。每次遍历数组中的一个数时,我们将这个数对应的位设置为1。如果再次遇到这个数时,说明它已经出现过,因此它就是重复的数。
这种方法的时间复杂度是O(n),空间复杂度是O(1),因为我们只需要一个整数来记录已遇到的数。
解决代码
public class Solution287 { public static int findDuplicate(int[] nums) { int mask = 0; for (int num : nums) { if ((mask & (1 << (num - 1))) != 0) { return num; } mask |= (1 << (num - 1)); } return -1; // 根据题意,这里不会有这个情况 } public static void main(String[] args) { int[] nums = {3, 1, 3, 4, 2}; System.out.println(findDuplicate(nums)); }} 代码解释
这种方法高效且符合题目要求,能够在O(n)时间复杂度和O(1)空间复杂度下解决问题。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2026年05月26日 21时34分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php-兔子问题,斐波那契数列
2023-02-28
php-有序数组合并后仍有序
2023-02-28
php-约瑟夫问题
2023-02-28
php.ini中常见的配置信息选项
2023-02-28
php.ini配置中有10处设置不当,会使网站存在安全问题
2023-02-28
PHP7 新特性
2023-02-28
PHP7+MySQL5.7+Nginx1.9. on Ubuntu 14.0
2023-02-28
php7.1.6 + redis
2023-02-28
php7中使用php_memcache扩展
2023-02-28
PHP7中十个需要避免的坑
2023-02-28
php7和PHP5对比的新特性和性能优化
2023-02-28
PHP7安装pdo_mysql扩展
2023-02-28
PHP7实战开发简单CMS内容管理系统(7) 后台登录架构 用户登录校验
2023-02-28
php7,从phpExcel升级到PhpSpreadsheet
2023-02-28
PHP8中match新语句的操作方法
2023-02-28
PHP:第一章——PHP中常量和预定义常量
2023-02-28
PHP:第一章——PHP中的位运算
2023-02-28
phpcms
2023-02-28
phpcms 2008 product.php pagesize参数代码注射漏洞
2023-02-28