leetcode15.三數之和題解:邏輯清晰帶你分析

介紹

在這里插入圖片描述
題源

分析

1.雙指針+固定一個數

首先明白一點,我們有三個數,我們想使用雙指針,那就必須固定一個數。

2.二分

本題還涉及二分,雙指針經常和二分結合使用(二分本質就是雙指針,仔細思考這思考這句話),所以我們要在一開始先排序。

3.去重

題目要求答案不可包含重復的三元組,那么就必須考慮去重。
又分兩種情況:
1.對固定的數來說,用當前數和前一個數比較,相同直接跳過本次了。
2.對后兩個數,只需要考慮當雙指針找到了一次對應目標后,把可能重復的數字跳過去。

明確了思路,代碼就非常好寫了。

cpp代碼

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {//一是固定數+雙指針,二是二分,三是去重  vector<vector<int>> res;if(nums.size()<3) return res;sort(nums.begin(),nums.end());for(int i=0;i<nums.size();i++){if(nums[i]>0) break;if(i>0&&nums[i]==nums[i-1]) continue;int j=i+1,k=nums.size()-1;while(j<k){if(nums[i]+nums[j]+nums[k]==0) {res.push_back({nums[i],nums[j],nums[k]});while(j<k && nums[j]==nums[j+1]) j++;while(j<k && nums[k]==nums[k-1]) k--;j++;k--;}else if(nums[i]+nums[j]+nums[k]<0){j++;}else{k--;}}}return res;}
};

流程

指針相遇
未相遇
和小
和大
開始
輸入數組
數組排序
固定第一個數
雙指針查找
找到解?
保存結果
繼續查找
固定下一數
判斷和大小
左指針右移
右指針左移

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

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

相關文章

exports使用 package.json字段控制如何訪問你的 npm 包

目錄 想象一下你正在開發一個 npm 包…… 術語 什么是exports領域&#xff1f; exports好處 保護內部文件 多格式包 將子路徑映射到dist目錄 子路徑導出 單一入口點 多個入口點 公開軟件包文件的子集 有條件出口 設置使用條件 默認條件 句法 針對 Node.js 和瀏…

AngularJS 安裝使用教程

一、AngularJS 簡介 AngularJS 是 Google 開發的一款前端 JavaScript 框架&#xff0c;采用 MVVM 架構&#xff0c;提供了數據雙向綁定、依賴注入、模塊化、路由管理等強大功能&#xff0c;適合構建單頁面應用&#xff08;SPA&#xff09;。注意&#xff1a;AngularJS&#xf…

基于python和neo4j構建知識圖譜醫藥問答系統

一、pyahocorasick1.安裝 pyahocorasick 包&#xff1a; pip install pyahocorasick -i https://pypi.tuna.tsinghua.edu.cn/simple/pip install pyahocorasick &#xff1a;安裝名為 pyahocorasick 的第三方庫&#x1f449; 這個庫是一個 Aho-Corasick 多模匹配算法 的 Python…

片上網絡(NoC)拓撲結構比較

1. 拓撲結構拓撲結構延遲吞吐量跳數功耗面積開銷可擴展性容錯性布線復雜度適合通信模式Mesh&#xff08;網格&#xff09;低&#xff08;O(√N)&#xff09;高&#xff08;多路徑并行&#xff09;O(√N)中高&#xff08;路由器多&#xff09;中高&#xff08;規則布線&#xff…

git merge 命令有什么作用?具體如何使用?

回答重點git merge 命令主要用于將兩個分支的歷史和內容合并在一起。簡而言之&#xff0c;它會將一個分支的更改引入到當前分支中。常見的使用場景是將功能分支&#xff08;feature branch&#xff09;的修改合并回主分支&#xff08;main branch&#xff09;或者開發分支&…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - jieba庫分詞簡介及使用

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解 jieba庫分詞簡介及使用 視頻在線地址&…

大模型的后訓練與邏輯能力

《DeepSeek原生應用與智能體開發實踐》【摘要 書評 試讀】- 京東圖書 在人工智能與機器學習領域&#xff0c;模型的后訓練階段不僅是技術流程中的關鍵環節&#xff0c;更是提升模型性能&#xff0c;尤其是數學邏輯能力的“黃金時期”。這一階段&#xff0c;通過對已初步訓練好…

pycharm安裝教程-PyCharm2025安裝步驟【MAC版】附帶安裝包

pycharm安裝教程-PyCharm2025安裝詳細步驟【MAC版】安裝安裝包獲取&#xff08;文章末尾&#xff09;今天來給大家分享 Mac 系統安裝 PyCharm&#xff0c;附帶安裝包資源安裝&#xff0c; PyCharm 相關就不敘述了&#xff0c;直接開始安裝&#xff01; 安裝 2024版本、2025年…

【React Native】路由跳轉

Link 跳轉的路徑&#xff0c;就在href里寫/details。路徑都是相對于app目錄來寫的&#xff0c;也就是說app目錄就是/。很多時候&#xff0c;需要跳轉的組件比較復雜。比方說&#xff0c;要在里面要嵌套按鈕&#xff0c;或者其他東西。這種情況下&#xff0c;就可以在Link組件里…

使用 Spring Boot + AbstractRoutingDataSource 實現動態切換數據源

1. 動態切換數據源的原理AbstractRoutingDataSource 是 Spring 提供的一個抽象類&#xff0c;它通過實現 determineCurrentLookupKey 方法&#xff0c;根據上下文信息決定當前使用的數據源。核心流程如下&#xff1a;定義多數據源配置&#xff1a;注冊多個數據源。實現動態數據…

Kubernetes (K8S)知識詳解

Kubernetes (K8S) 是什么&#xff1f; Kubernetes 是 Google 在 2014 年開源的生產級別的容器編排技術&#xff08;編排也可以簡單理解為調度、管理&#xff09;&#xff0c;用于容器化應用的自動化部署、擴展和管理。它的前身是 Google 內部的 Borg 項目&#xff0c;Borg 是 …

在github上傳python項目,然后在另外一臺電腦下載下來后如何保障成功運行

如何在 GitHub 上傳并在另一臺電腦成功運行 Python 項目? 一、上傳前&#xff08;本地準備&#xff09; 在你的項目文件夾中進行以下準備&#xff1a; 1. 確保結構清晰 my_project/ ├── main.py ├── utils.py ├── config.yaml ├── requirements.txt └── README…

詳解Mysql Order by排序底層原理

MySQL 的 ORDER BY 子句實現排序是一個涉及查詢優化、內存管理和磁盤 I/O 的復雜過程。其核心目標是高效地將結果集按照指定列和順序排列。一、確定排序模式 (Sort Mode)MySQL 根據查詢特性和系統變量決定采用哪種排序策略&#xff1a;1.1 Rowid 排序<sort_key, rowid> 模…

SpringBoot的介紹和項目搭建

SpringBoot是簡化Spring應用開發的一個框架&#xff0c;他是Spring技術棧的整合。優點&#xff1a;能夠快速創建獨立運行的Spring項目以及與主流框架集成使用嵌入式的Servlet容器&#xff0c;應用無需打成war包&#xff0c;內嵌tomcatStarters自動依賴和版本控制大量的自動裝配…

Selenium 攻略:從元素操作到 WebDriver 實戰

在自動化測試、網頁數據爬取、批量操作網頁等場景中&#xff0c;Selenium 無疑是最受歡迎的工具之一。作為一款強大的 Web 自動化工具&#xff0c;它能模擬人類操作瀏覽器的行為&#xff0c;實現點擊、輸入、跳轉等一系列動作。本文將從基礎到進階&#xff0c;全面解析 Seleniu…

【算法訓練營Day14】二叉樹part4

文章目錄找樹左下角的值路徑總和總結&#xff1a;遞歸函數的返回值路徑總和 II總結&#xff1a;二叉樹遞歸的思考從中序與后序遍歷序列構造二叉樹找樹左下角的值 題目鏈接&#xff1a;513. 找樹左下角的值 解題邏輯&#xff1a; 使用層序遍歷&#xff0c;將最后一層的第一個元…

工資系統如何計算工資

工資系統計算工資是一個集成數據收集、規則應用、自動核算和合規審核的自動化過程&#xff0c;以下是其核心原理和步驟&#xff0c;結合技術實現與法規要求進行說明&#xff1a;?? 一、工資系統的基本框架與數據準備系統初始化與規則配置企業信息設置&#xff1a;錄入公司名稱…

車載通信架構 --- DoIP協議通信

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 鈍感力的“鈍”,不是木訥、遲鈍,而是直面困境的韌勁和耐力,是面對外界噪音的通透淡然。 生活中有兩種人,一種人格外在意別人的眼光;另一種人無論…

基于Event Sourcing和CQRS的微服務架構設計與實戰

基于Event Sourcing和CQRS的微服務架構設計與實戰 業務場景描述 在電商系統中&#xff0c;訂單的高并發寫入與復雜的狀態流轉&#xff08;下單、支付、發貨、退貨等&#xff09;給傳統的CRUD模型帶來了挑戰&#xff1a; 數據一致性難保證&#xff1a;跨服務事務處理復雜&#x…

初級安全課第二次作業

&#xff08;一&#xff09;xss-labs 1~8關 1、前期準備 &#xff08;1&#xff09;打開小皮面板&#xff0c;并啟動Apache和MySQL&#xff08;2&#xff09;將 xss-labs放到 phpstudy_pro 的 WWW 目錄下&#xff08;3&#xff09;訪問連接&#xff1a;http://localhost/xss-la…