【LeetCode Top 100】287. Find the Duplicate Number【Medium】【JAVA】

【S32K3 MCAL配置】-3.4-CANFD配置-接收特定的“经典CAN/CANFD标准帧”和“经典CAN/CANFD扩展帧”(基于MCAL+FreeRTOS) 阅读详情

1. 题目

在这里插入图片描述

2. 题意

题意较为容易理解,即有一个找出重复数。

3. 思路

如果可以使用其他额外空间的话,可以直接用另外一个数组进行记录,或者使用HashMap来记录各个数值出现的次数,但该题目要求只能使用额外O(1)的空间,所以我们应该考虑如何通过修改原有数组的值来记录数值出现的次数。
第一种思路可以直接进行排序,最终遍历排序结果,看哪个数值有两个相同的值相邻,即为重复的值。
第二种思路,由于数字有n+1个,数值又是从1~n,我们可以考虑将数值放置到与下标对应的位子上,如果出现两个数值需放到同一个下标处,则该两个数值必定相同,必定为重复数。
举例说明:比如现在数组为[1,2,1],我们可以考虑将数值为i的数,放置到下标为i-1的位置上,所以1和1需要放置到下标为0的位置上,2需要放置到下标为1的放置上,因此出现了两个数值需放到同一个下标处,找到重复数。

4. 解题代码


	public int findDuplicate(int[] nums) {
        int duplicateNum = 0;
        for (int i = 0; i < nums.length; i++) {
            // 数字已放置在对应的下标处,value为 i 放置在 i - 1 的下标处
            if (nums[i] == i + 1) {
                continue;
            }

            // temp 为该数字应放置下标处的值
            int temp = nums[nums[i] - 1];

            // 如果出现两个相同的数需要放入到同一个下标处,则该数为重复数
            if (temp == nums[i]) {
                duplicateNum = temp;
                break;
            }

            // 交换两数,继续从该下标处往后遍历
            nums[nums[i] - 1] = nums[i];
            nums[i] = temp;
            i--;
        }
        return duplicateNum;
    }

5. 运行结果

在这里插入图片描述

6. 相关链接

本题代码的github链接
其他 LeetCode 题目解析

Spring AI Alibaba实战训练营-05模型输出质量评估 本文介绍了使用Spring AI Alibaba库评估AI模型输出质量的方案。项目通过5种评估器实现自动化评估:相关性评估、事实准确性评估、答案相关性评分、答案正确性评估和忠实度评估。开发步骤包括环境准备(Java 17、Maven、API Key获取)、创建Maven项目、配置Spring AI(通过环境变量安全设置API Key)以及实现RAG流程。重点强调了通过评估器自动检测AI输出的质量指标,帮助开发者优化AI应用性能。 阅读详情

相关推荐

TDISP(TEE Device Interface Security Protocol)软件操作流程

/ 1. SPDM会话相关定义(🔶1-37、🔶1-187)// SPDM会话ID// AES-256-GCM加密密钥(TDISP要求)// 初始向量// 会话是否激活// 2. IDE流配置(🔶1-52、🔶1-625)// IDE流ID// 4个子流的AES密钥(覆盖所有子流类型)// 密钥是否已配置// 3. TDI状态与配置(🔶1-207、🔶1-210)TDI_CONFIG_UNLOCKED = 0, // 初始配置态。

inquisiter 1429

LeetCode 287. Find the Duplicate Number (Medium)

287. Find the Duplicate Number

Jacky_Lrd的博客 287

Zabbix 简介、优缺点、基础原理

(8条消息) Zabbix 的基础概念、原理和架构_Lee木木的博客-优快云博客_zabbix架构类型Zabbix 的基础概念、原理和架构_Lee木木的博客-优快云博客_zabbix架构类型 --------------------------------------------------------------------------------------------------------------------------- 一、Zabbix 简介 Zabbix是由A...

weixin_50196615的博客 2035

LeetCode Top 100 Liked Questions 287. Find the Duplicate Number (Java版; Medium)

welcome to my blog LeetCode Top 100 Liked Questions 287. Find the Duplicate Number (Java版; Medium) 题目描述 Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive),...

littlehaes的博客 258

ESP32拓展板DIY全攻略:从零打造你的传感器控制中心(附PCB设计文件)

本文详细介绍了如何从零开始DIY ESP32拓展板,打造多功能传感器控制中心。内容涵盖项目规划、硬件设计、PCB布局、制作测试全流程,并提供进阶优化建议和实战案例。特别适合嵌入式硬件爱好者学习ESP32拓展板开发,实现各类传感器的高效集成与控制。

blockchain9miner的博客 1077

图片数据爬取工具Image-Downloader的安装和使用

文章目录1、python安装2、下载chromedriver并配置3、下载phantomjs并配置.4、安装相关python库5、使用 安装包地址:https://github.com/sczhengyabin/Image-Downloader 下载: 方式一:打开cmd,输入: git clone https://github.com/sczhengyabin/Image-Downloader.git 方式二:打开网址 1、python安装 该数据爬取工具要求python>=3.5,由于

wxplol的博客 6672

【LeetCode 1024】视频拼接 Video Stitching

题目: 题意为:用一个chips[][]数组来记录一些视频片段,chips[i][0]记录开始时间,chips[i][1]记录结束时间,给定一个最终要到达的时间点,求判断给定的视频片断,能否拼凑到要求的时间点,如果能到达,问最少需要多少个视频片段可以完成。 举例: 举例部分,例如第三个例子,里面的视频碎片中,选取[0,4]、[4,7]、[6,9]这三个片段,刚好可以到达时间点 9,因此需要的最...

卤小蛋学编程 9427

Grok-1.5+Ollama企业级本地化部署与合规实践指南

本文详细介绍了Grok-1.5+Ollama企业级本地化部署与合规实践指南,重点分析了本地化部署的成本优势和数据主权保障。通过RTX 4090显卡的硬件选型、Ubuntu 22.04系统优化及部署流程中的关键陷阱规避,为企业提供了高效、安全的AI模型部署方案。特别适合金融、医疗等敏感行业。

weixin_29094539的博客 180

树、二叉树的前中后层序遍历(递归、非递归Java实现)

文章目录1. 二叉树的前中后序遍历(递归,非递归)以及层序遍历1.1 二叉树前中后遍历的递归解法1.2 二叉树前中后遍历的非递归解法1.2.1 非递归的前序遍历:(LeetCode 144)1.2.2 非递归的中序遍历:(LeetCode 94)1.2.3 非递归的后序遍历:(LeetCode 145)1.3 层序遍历:(LeetCode 102、103、107)2 树的前中后层序遍历2.1 前序...

卤小蛋学编程 5077

Harness设计——Anthropic实战:规划器、生成器、评估器三角色协作详解

本文探讨了如何通过多智能体架构突破AI编码的瓶颈问题。文章首先分析了当前AI编码面临的两大核心挑战:上下文窗口限制导致的连贯性丧失,以及自我评估机制缺失引发的质量判断偏差。针对这些问题,作者提出了基于生成对抗网络(GAN)灵感的解决方案,设计了三智能体系统:规划器负责需求分析,生成器执行编码任务,评估器进行质量审查。 实验表明,在前端设计任务中,通过制定可量化的评分标准(设计质量、原创性、工艺、功能性)并建立生成-评估反馈循环,能显著提升输出质量。这种架构随后被扩展到全栈开发领域,采用类似敏捷开发的&quo

oe1019的专栏 865

doris2.1.8连接报错ERROR 1203 (42000): Reach limit of connections解决办法

摘要:客户Doris数据库报错"ERROR 1203 (42000): Reach limit of connections"的解决过程。发现AI提供的解决方案存在错误:1)查询命令应为SHOW FRONTEND CONFIG而非show variables;2)参数名称应为qe_max_connection而非max_connections。正确解决步骤:1)用admin账户登录查看连接数限制和当前连接数;2)通过SHOW PROPERTY命令检查用户资源限制;3)针对不同情况修改参数

Brent的专栏 1761

LeetCode 有关树深度、路径的题目(JAVA代码实现)

文章目录1. 路径相关的题目112.路径总和113.路径总和 II437.路径总和 III124.二叉树中的最大路径和257.二叉树的所有路径2. 深度相关的题目111.二叉树的最小深度559.N叉树的最大深度834.树中距离之和863.二叉树中所有距离为 K 的结点865.具有所有最深结点的最小子树3. 其他长度相关的题目543.二叉树的直径563.二叉树的坡度662.二叉树最大宽度 1. 路径...

卤小蛋学编程 1075

PS射击游戏射线检测优化:原理、工程与全链路高性能实现

射线池:减少GC,提升批量检测效率。分层检测:先粗后细,远距离射击高效判定。批量检测:并行处理,适合大量射线场景。空间结构:进一步加速大场景检测。下面继续深入射线检测优化,补充更多实用细节和进阶技巧,包括空间分区加速、射线检测多线程/异步化、射线合并与分帧、射线池通用模板、常见性能陷阱与调优建议等。对于极端性能需求,可自定义轻量级物理系统,仅检测关键对象(如玩家、子弹),跳过复杂物理引擎。结合AABB、OBB、球体等简单碰撞体,射线-包围体检测极快。空间分区+分层检测是大场景射线优化核心。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 434

【LeetCode 105 106 889】重建二叉树(给定树的前中后序遍历方式中的两种来重建二叉树)

树的常见遍历方式有:前序遍历,中序遍历,后序遍历,层序遍历,关于这些遍历方式的递归和非递归实现:https://blog.csdn.net/Applying/article/details/84982712 现在,如果给定前中后序遍历方式中的两种,如何重建二叉树呢? 文章目录从前序和中序遍历构建二叉树从后序和中序遍历构建二叉树从前序和后序遍历构建二叉树 从前序和中序遍历构建二叉树 这个是三种情况中...

卤小蛋学编程 1006

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【LeetCode 89】格雷编码 构建法和自然二进制编码转化法

题目: 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。 解题: 首先,补充一下格雷码的含义:在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码。例如,位数为2格雷码的其中一个序列:00,01,11,10,它们任意两个相邻的数值,只有一个位数不同。 ...

卤小蛋学编程 1003

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

链表相关题目总结(含leetcode链表题Java代码)

链表是最常见的数据结构之一,下面主要总结题目,不涉及基本的数据结构的介绍 文章目录1. 常见的链表操作题目1.1 链表倒置(leetcode 206)1.2 两个有序链表的合并(leetcode 21)2. leetcode 其他相关题目No.83 Remove Duplicates from Sorted ListNo.237 Delete Node in a Linked List (删除链...

卤小蛋学编程 883

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【LeetCode 983】门票的最低费用 Minimum Cost For Tickets

题目: 即,给定一个数组代表你一年中的什么时候会去电影院,给定另外一个数组代表一日票,七日票,跟三十日票的金额,要求出如何买票,才能使花费最少。 思路: 明显看出这个是一个动态规划的题目,因此我需要两步曲来完成,首先是状态的定义,我们发现,比如 days[1,2,3,5],我们要输出的是第5天所花费的最少金额,而且 days是严格递增的,所以我们只要求出第days[days.length - ...

卤小蛋学编程 733

【LeetCode 1014】最佳观光对 Best Sightseeing Pair

LeetCode 1014题,属于数组类型的题目,题意: 翻译成中文,就是要找数组中的两个点,满足: A[i] + A[j] + i - j的值最大 且 i < j 思路: 最快速的想法,就是直接暴力求解: 因为实际上就是求符合题意的两个点能获得的最大值,直接两个循环: public int maxScoreSightseeingPair(int[] A) { ...

卤小蛋学编程 622

【LeetCode 136 137 260】 只出现一次的数字Ⅰ、Ⅱ、Ⅲ (Single Number)

LeetCode 第136、137、260刚好都是同一类型的题目:只出现一次的数字,放在一起进行整理 文章目录136. 只出现一次的数字Ⅰ137. 只出现一次的数字Ⅱ260. 只出现一次的数字Ⅲ 136. 只出现一次的数字Ⅰ 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗...

卤小蛋学编程 599

【LeetCode 45 55 1306】Jump Game I,II,III【JAVA】

跳跃游戏,合计三道题。 55. Jump Game 1. 题目 运行结果 45. Jump Game II 1. 题目: 运行结果 运行结果 1306. Jump Game III 1. 题目 运行结果

卤小蛋学编程 414

【LeetCode Top 100】56. Merge Intervals【Medium】【JAVA】

1. 题目 2. 题意 题目很好理解,就是输入多个时间碎片,现在需要尽可能把碎片进行合并,求合并后的结果。 3. 思路 一个比较容易想到的思路,维护一个当前的合并之后的时间碎片组,通过遍历所有的时间碎片,不断向合并之后的时间碎片组加入新的时间碎片,并将其进行合并整理即可。最佳的时间复杂度为O(n),即每次加入的碎片都可以进行合并,维护的合并之后的时间碎片组永远只有一个碎片。最差的时间复杂度为O(...

卤小蛋学编程 391

【LeetCode】Best Time to Buy and Sell Stock Ⅰ、Ⅱ、Ⅲ【Java】

121. Best Time to Buy and Sell Stock 题意为只可买入一次,并卖出一次,要求获取的利润最高。最简单的思路就是两层循环,比较每一个数与后面的数的差值,以求出当前能获取的最大差值,即为最大利润,算法的时间复杂度即O(n²)。我们可以考虑优化算法,我们每获取一个数时,我们其实只需要跟这个数之前最小的那个数做比较,就可以知道这个为出口时,能获取的最大利润值,再通过比较所...

卤小蛋学编程 374

【LeetCode Top 100】406. Queue Reconstruction by Height【Medium】【JAVA】

1. 题目 2. 题意 有 n 个 (h, k) 对,h 代表高度,k 代表这个对在队列中的位置,在它的位置前面,有 k 个对的高度,比它高或等高。例如 (7, 0),代表其高度为 7,在它前面有 0 个高度不小于它的对。(4, 4) 代表其高度为 4,在它前面有 4 个高度不小于它的对。 3. 思路 这道题,官方的提示是: 让你去找出最小高度的数的位置。 首先,我们先假设没有相同高度的对存在...

卤小蛋学编程 366

【LeetCode 1358】Number of Substrings Containing All Three Characters【Medium】【JAVA】

1. 题目 2. 题意 题目几个关键信息: 该字符串只包含’a’,‘b’,'c’三种字符 示例1中发现对于相同但是位置不同的子串,是按两个结果计算,无需去掉重复 该字符串长度默认大于3 3. 方法 3.1 思路 最简单的思路就是暴力法,直接两个循环,并判断结果字符串是否都包含了’a’,‘b’,'c’三种字符。但该方法时间复杂度较高,O(n²),因此考虑有没有简单的做法。 题目是求符合条件的子...

卤小蛋学编程 357

【LeetCode 225】用一个or两个队列实现栈

Implement Stack using Queues

卤小蛋学编程 340

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 352
上一篇: 【LeetCode 1305】All Elements in Two Binary Search Trees【Medium】【JAVA】
下一篇: 【LeetCode 45 55 1306】Jump Game I,II,III【JAVA】
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值