LeetCode hot 100—尋找重復數

題目

給定一個包含?n + 1?個整數的數組?nums?,其數字都在?[1, n]?范圍內(包括?1?和?n),可知至少存在一個重復的整數。

假設?nums?只有?一個重復的整數?,返回?這個重復的數?。

你設計的解決方案必須?不修改?數組?nums?且只用常量級?O(1)?的額外空間。

示例

示例 1:

輸入:nums = [1,3,4,2,2]
輸出:2

示例 2:

輸入:nums = [3,1,3,4,2]
輸出:3

示例 3 :

輸入:nums = [3,3,3,3,3]
輸出:3

分析

我們可以把數組?nums?看作是一個特殊的鏈表。對于數組中的每個索引?i,將?nums[i]?視為從索引?i?指向的下一個節點的位置。由于數組中存在重復的數字,這就意味著在這個特殊的鏈表中會形成一個環,而重復的數字就是環的入口節點。

快慢指針法

核心思路是將數組看作一個鏈表,通過快慢指針來檢測鏈表中是否存在環,進而找到重復的數字。

時間復雜度:O(n),?n?是數組的長度

空間復雜度:O(1)

class Solution {
public:int findDuplicate(std::vector<int>& nums) {// 初始化快慢指針int slow = nums[0];int fast = nums[nums[0]];// 快慢指針相遇,檢測環的存在while (slow != fast) {slow = nums[slow];fast = nums[nums[fast]];}// 慢指針回到起點slow = 0;// 快慢指針以相同速度前進,再次相遇的位置即為重復數字while (slow != fast) {slow = nums[slow];fast = nums[fast];}return slow;}
}; 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73566.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73566.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73566.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux - centos7 部署 redis6.0.5

事先說明 本篇文章只解決在部署redis中出現的問題&#xff0c;并沒有部署redis的全過程&#xff0c;詳細部署過程可以參考Linux安裝部署Redis(超級詳細) - 長沙大鵬 - 博客園 執行 make 命令時報錯 原因&#xff1a;是因為gcc版本太低 升級gcc版本時 出現沒有可用軟件包 devt…

31天Python入門——第15天:日志記錄

你好&#xff0c;我是安然無虞。 文章目錄 日志記錄python的日志記錄模塊創建日志處理程序并配置輸出格式將日志內容輸出到控制臺將日志寫入到文件 logging更簡單的一種使用方式 日志記錄 日志記錄是一種重要的應用程序開發和維護技術, 它用于記錄應用程序運行時的關鍵信息和…

AI Agent開發大全第八課-Stable Diffusion 3的本地安裝全步驟

前言 就像我們前面幾課所述,本系列是一門體系化的教學,它不像網上很多個別存在的單篇博客走“吃快餐”模式,而是從扎實的基礎來帶領大家一步步邁向AI開發高手。所以我們的AI課程設置是相當全面的,除了有牢固的基礎知識外還有外面互聯網上也搜不到的生產級實戰。 前面講過…

用selenium+ChromeDriver豆瓣電影 肖申克的救贖 短評爬取(pycharm 爬蟲)

一、豆瓣電影 肖申克的救贖 短評urlhttps://movie.douban.com/subject/1292052/comments 二、基本知識點講解 1. Selenium 的基本使用 Selenium 是一個用于自動化瀏覽器操作的庫&#xff0c;常用于網頁測試和爬蟲。代碼中使用了以下 Selenium 的核心功能&#xff1a; webdriv…

開源在線客服系統源碼-前端源碼加載邏輯

客服源碼是使用Golang(又稱Go)開發的&#xff0c;Go是Google公司開發的一種靜態強類型、編譯型、并發型&#xff0c;并具有垃圾回收功能的編程語言。Go 天生支持并發。好處太多就不多說了。 全源碼客服系統用戶&#xff0c;想要針對自己的業務&#xff0c;進行二次開發&#xf…

Oracle數據庫服務器地址變更與監聽配置修改完整指南

一、前言 在企業IT運維中&#xff0c;Oracle數據庫服務器地址變更是常見的運維操作。本文將詳細介紹如何安全、高效地完成Oracle數據庫服務器地址變更及相關的監聽配置修改工作&#xff0c;確保數據庫服務在遷移后能夠正常運行。 二、準備工作 1. 環境檢查 確認新舊服務器I…

g對象在flask中主要是用來實現什么

在Flask中&#xff0c;g對象&#xff08;全稱flask.g&#xff09;是一個線程局部&#xff08;thread-local&#xff09;的臨時存儲對象&#xff0c;主要用于在單個請求的上下文&#xff08;request context&#xff09;中共享數據。它的核心作用是為同一請求的不同處理階段&…

工具介紹《WireShark》

Wireshark 過濾命令中符號含義詳解 一、比較運算符 Wireshark 支持兩種比較運算符語法&#xff1a;英文縮寫&#xff08;如 eq&#xff09;和 C語言風格符號&#xff08;如 &#xff09;&#xff0c;兩者功能等價。 符號&#xff08;英文縮寫&#xff09;C語言風格符號含義示…

JavaScrip-模版字符串的詳解

1.模版字符串的詳解 1.1 模版字符串的使用方法 在ES6之前&#xff0c;如果我們想要將字符串和一些動態的變量&#xff08;標識符&#xff09;拼接到一起&#xff0c;是非常丑陋的&#xff08;ugly) ES6允許我們使用模版字符串來嵌入變量或者表達式來進行拼接 首先&#xff0c;…

STM32C011 進入停止模式和待機模式

對于STM32C011J4M3微控制器&#xff0c;你可以使用HAL庫來實現進入停止模式&#xff08;Stop Mode&#xff09;和待機模式&#xff08;Standby Mode&#xff09;。下面是進入停止模式和待機模式的示例代碼&#xff1a; 進入停止模式代碼示例&#xff1a; #include "stm3…

海康設備http監聽接收報警事件數據

http監聽接收報警事件數據 海康獲取設備報警事件數據兩種方式&#xff1a; 1、sdk 布防監聽報警事件數據&#xff08;前面文章有示例&#xff09; 2、http監聽接收報警事件數據 http監聽接收報警事件數據&#xff0c;服務端可以使用netty通過端口來監聽獲取事件數據。 WEB 端…

FastAPI 全面指南:功能解析與應用場景實踐

FastAPI 全面指南&#xff1a;功能解析與應用場景實踐 FastAPI 是一個現代、快速&#xff08;高性能&#xff09;的 Python Web 框架&#xff0c;用于構建 API。它基于標準 Python 類型提示&#xff0c;使用 Starlette 和 Pydantic 構建&#xff0c;提供了極高的性能并簡化了開…

【STM32】編寫程序控制開發板的RGB LED燈

目錄 1、原理圖2、文件結構3、使用寄存器模式點亮3.1、什么是寄存器3.2、寄存器開發的本質3.3、寄存器開發步驟3.4、主要源碼3.4.1、main.c3.4.2、drv_gpio.h3.4.3、drv_gpio.c3.4.4、使用BSRR和BRR影子寄存器優化drv_gpio.c3.4.5、效果演示 4、使用標準庫模式點亮4.1、使用標準…

MyBatis-Plus 的加載及初始化

在 Spring Boot 啟動過程中&#xff0c;MyBatis-Plus 的加載和初始化涉及多個階段的工作。這些工作包括 MyBatis-Plus 自身的配置解析、Mapper 接口的掃描與注冊、SQL 語句的動態注入以及底層 MyBatis 的初始化等。以下是對整個過程的詳細分析&#xff1a; 1. Spring Boot 啟動…

SpringBoot中安全的設置阿里云日志SLS的accessKey

眾所周知,阿里云的服務都是基于accesskeyId和accesskeySecret來進行身份鑒權的,但唯獨日志因為需要寫入到.xml文件里對于accesskeyId和accesskeySecret需要進行一定程度的改進,尤其是使用了jasypt進行加密的參數傳遞進去logback.xml更是會遇到需要對參數進行解密的問題,而官網只…

關于解決Ubuntu終端及系統字體大小的問題

在Ubuntu中調整終端和系統字體大小可以通過以下方法&#xff08;可能不僅僅只是這幾種&#xff09;實現&#xff1a; 1. 調整系統字體大小 打開終端并輸入以下命令&#xff0c;安裝GNOME Tweaks&#xff0c;等待安裝完成&#xff1a; sudo apt install gnome-tweaks 接著進行…

Rust vs. Go: 性能測試(2025)

本內容是對知名性能評測博主 Anton Putra Rust vs. Go (Golang): Performance 2025 內容的翻譯與整理, 有適當刪減, 相關數據和結論以原作結論為準。 再次對比 Rust 和 Go&#xff0c;但這次我們使用的是最具性能優勢的 HTTP 服務器庫---Hyper&#xff0c;它基于 Tokio 異步運…

【NLP 48、大語言模型的神秘力量 —— ICL:in context learning】

目錄 一、ICL的優勢 1.傳統做法 2.ICL做法 二、ICL的發展 三、ICL成因的兩種看法 1.meta learning 2.Bayesian Inference 四、ICL要點 ① 語言模型的規模 ② 提示詞prompt中提供的examples數量和順序 ③ 提示詞prompt的形式&#xff08;format&#xff09; 五、fine-tune VS I…

兩數之和解題記錄

開始打算用一個數組保存差值&#xff0c;arr[target-nums[i]] i, 只要arr[nums[i]]有內容就能滿足target&#xff0c;返回arr[nums[i]]和i。但是會出現復數的情況&#xff0c;所以換成map。 換成map就只用一邊遍歷&#xff0c;一遍檢查和存入對應key就行了&#xff0c;value就…

P1722 矩陣Ⅱ - 洛谷

題源&#xff1a;P1722 矩陣 II - 洛谷 看了題目之后&#xff0c;需要注意的是&#xff1a; ①在1 ~ i 個格子中紅色數量 > 黑色數量 ②最后&#xff0c;在2 * n 個格子中&#xff0c;紅色數量 黑色數量 根據這兩個約束條件&#xff0c;可以知道&#xff0c;第一個格…