【算法day14】三數之和

三數之和

https://leetcode.cn/problems/3sum/description/

給你一個整數數組 nums ,判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i != j、i != k 且 j != k ,同時還滿足 nums[i] + nums[j] + nums[k] == 0 。請你返回所有和為 0 且不重復的三元組。
注意:答案中不可以包含重復的三元組。

其實仔細想想,三個指針里面i是單向移動的?? 還可以簡化
在這里插入圖片描述

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> ans;std::sort(nums.begin(), nums.end());if (nums.size() == 0 || nums[0] > 0) {return ans;}int nums_len = nums.size();for (int left = 0; left < nums_len; left++) {int target;int last_num = -nums[left];if (left > 0 && nums[left] == nums[left - 1]) {continue;}int right = nums_len - 1;target = -nums[left];for (int i = left + 1; i < nums_len; i++) {if (i > left + 1 && nums[i] == nums[i - 1]) {continue;}while (i < right && nums[i] + nums[right] > target) {--right;}if (right == i) {break;}if (target == nums[i] + nums[right]) {ans.push_back({nums[left], nums[i], nums[right]});}}}return ans;}
};

在這里插入圖片描述

vector<vector<int>> threeSum(vector<int>& nums) {int nums_len = nums.size();sort(nums.begin(), nums.end(), [](int a, int b) { return a < b; });vector<vector<int>> ans;for (int left = 0; left < nums_len; left++) {if (left > 0 && nums[left] == nums[left - 1]) {// 遇到重復的進行跳過continue;}int right = nums_len - 1;for (int mid = left + 1; mid < nums_len; mid++) {if (mid > left + 1 && nums[mid] == nums[mid - 1]) {// 遇到重復的進行跳過continue;}while (mid < right &&nums[mid] + nums[left] + nums[right] > 0) {right--;}if (right == mid) {break;}if (nums[mid] + nums[left] + nums[right] == 0) {ans.push_back({nums[left], nums[mid], nums[right]});}}}return ans;}

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

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

相關文章

優化器/模型參數/超參數

參數&#xff08;Parameters&#xff09; vs. 超參數&#xff08;Hyperparameters&#xff09; 1.1 參數&#xff08;Parameters&#xff09; 定義&#xff1a;模型中需要學習的變量&#xff0c;例如神經網絡中的權重&#xff08;Weight&#xff09;和偏置&#xff08;Bias&a…

10、STL中的unordered_map使用方法

一、了解 1、unordered_map(哈希) unordered_map是借用哈希表實現的關聯容器。 訪問鍵值對O&#xff08;1&#xff09;&#xff0c;最壞情況O&#xff08;n&#xff09;&#xff0c;例如哈希沖突嚴重時。【n是一個哈希桶的元素數量】 unordered_map特性 鍵值對存儲&#xff…

C++ 頭文件說明

如果一個程序足夠大&#xff0c;代碼功能很多&#xff0c;可以想象&#xff0c;不可能把代碼寫在一個cpp文件里。我們需要模塊化&#xff0c;這樣的好處很多&#xff0c;方便分工合作&#xff0c;可讀性提高&#xff0c;調用也方便。 這個要怎么做呢&#xff1f; 很簡單直接當…

Lambda 表達式的語法:

在 Java 中&#xff0c;Lambda 表達式&#xff08;也稱為匿名方法&#xff09;是一種簡潔的表示方法接口&#xff08;Functional Interface&#xff09;實現的方式。它是 Java 8 引入的特性&#xff0c;目的是提高代碼的簡潔性和可讀性。 Lambda 表達式的語法&#xff1a; La…

C#零基礎入門篇(18. 文件操作指南)

## 一、文件操作基礎 在C#中&#xff0c;文件操作主要通過System.IO命名空間中的類來實現&#xff0c;例如File、FileStream、FileInfo等。 ## 二、常用文件操作方法 ### &#xff08;一&#xff09;文件讀取 1. **使用File.ReadAllText方法讀取文件內容為字符串** …

每日一題--內存池

內存池&#xff08;Memory Pool&#xff09;是一種高效的內存管理技術&#xff0c;通過預先分配并自主管理內存塊&#xff0c;減少頻繁申請/釋放內存的系統開銷&#xff0c;提升程序性能。它是高性能編程&#xff08;如游戲引擎、數據庫、網絡服務器&#xff09;中的核心優化手…

【Linux系統】Linux進程終止的N種方式

Linux系列 文章目錄 Linux系列前言一、進程終止的概念二、進程終止的場景三、進程終止的實現3.1 程序退出碼3.2 運行完畢結果正常3.3 運行完畢結果異常3.4 程序異常退出 總結 前言 進程終止是操作系統中&#xff0c;進程的一個重要階段&#xff0c;他標志著進程生命周期的結束…

正則表達式引擎深入探討

正則表達式引擎&#xff08;Regular Expression Engine&#xff09;是正則表達式得以“活起來”的核心。它是一個精密的軟件組件&#xff0c;負責接收正則表達式和輸入文本&#xff0c;解析模式并執行匹配或替換操作&#xff0c;最終輸出結果——可能是簡單的“是否匹配”&…

java面試題,什么是動態代理?、動態代理和靜態代理有什么區別?說一下反射機制?JDK Proxy 和 CGLib 有什么區別?動態代理的底層

什么是動態代理&#xff1f; 動態代理是在程序運行期&#xff0c;動態的創建目標對象的代理對象&#xff0c;并對目標對象中的方法進行功能性增強的一種技術。 在生成代理對象的過程中&#xff0c;目標對象不變&#xff0c;代理對象中的方法是目標對象方法的增強方法。可以理解…

【工具類】Java的 LocalDate 獲取本月第一天和最后一天

博主介紹&#xff1a;?全網粉絲22W&#xff0c;CSDN博客專家、Java領域優質創作者&#xff0c;掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域? 技術范圍&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大數據、物…

嵌入式開發之STM32學習筆記day06

基于STM32F103C8T6的開發實踐——從入門到精通01 1. 引言 STM32系列微控制器是STMicroelectronics推出的一款高性能、低功耗的32位微控制器&#xff0c;廣泛應用于嵌入式系統中。STM32F103C8T6是其中非常受歡迎的一款&#xff0c;憑借其強大的性能、豐富的外設接口和低廉的價格…

學習使用 Git 和 GitHub 開發項目的教程推薦

Git 和 GitHub 是現代軟件開發中不可或缺的工具&#xff0c;無論你是個人開發者還是團隊成員&#xff0c;掌握它們都能極大提升效率。本文精選了一系列優質教程資源&#xff0c;涵蓋從基本 Git 命令到進階多人協作的內容。這些教程既有文字形式&#xff0c;也有視頻或交互式資源…

golang中的接口

1.簡介 在go中的接口是以一種類型,一種抽象的類型。接口(interface)是一組函數method的集合,go中的接口不能包含任何變量。在go中接口中的所有方法都沒有方法體,接口定義了一個對象的行為規范,只定義規范不實現。接口體現了程序的多態和高內聚低耦合的思想。go中的接口也是…

AI 浪潮下,職場的變與不變

如今&#xff0c;AI 如迅猛颶風&#xff0c;極速席卷職場&#xff0c;徹底攪亂了原有的秩序。你是否留意到&#xff0c;身邊的工作方式正悄然生變&#xff1f;今天&#xff0c;【探星 AI 研習社】就為大家深入剖析&#xff0c;AI 如何改寫職場劇本。無論你是大學生還是職場資深…

匯川EASY系列之以太網通訊(MODBUS_TCP做主站)

匯川Easy系列以太網通訊中(MODBUSTCP,plc做主站),終于可以不用使用指令就可以完成了,全程通過簡單的配置就可通訊。本文將通過EASY系列PLC與調試助手之間完成此操作。具體演示如下; 關于主站和從站的介紹 A/請求:即主動方 向被動方發送的一個要求的信息。 B/主站:發…

npm error gyp info

在使用 npm 安裝 Node.js 包時&#xff0c;可能會遇到各種錯誤&#xff0c;其中 gyp 錯誤是比較常見的一種。gyp 是 Node.js 的一個工具&#xff0c;用于編譯 C 代碼。這些錯誤通常發生在需要編譯原生模塊的 npm 包時。下面是一些常見的原因和解決方法&#xff1a; 常見原因及…

Oracle 19C分區表索引小結

一、大佬說&#xff08;楊廷琨&#xff09; LOCAL索引的最大好處是在進行分區操作&#xff0c;比如TRUNCATE PARTITION, DROP PARTITION時&#xff0c;不會出現索引INVALID的情況&#xff0c;不影響索引的可用性。由于GLOBAL索引所有的數據存儲在一起&#xff0c;因此當執行分…

AutoHub場景演示|帶您領略智能自動化操作的全新體驗

AutoHub是一款由OpenCSG推出的基于前沿大型語言模型&#xff08;LLM&#xff09;的瀏覽器自動化工具&#xff0c;旨在通過智能對話交互和自動化技術&#xff0c;幫助用戶更高效地瀏覽網頁和完成任務。它不僅能夠自動化繁瑣的網頁操作&#xff0c;還能夠為用戶提供精準的信息檢索…

深入解析 Linux 聲卡驅動:從架構到實戰

在嵌入式 Linux 設備中&#xff0c;音頻功能的實現離不開 Linux 聲卡驅動。而 ALSA (Advanced Linux Sound Architecture) 作為 Linux 內核的音頻框架&#xff0c;提供了一整套 API 和驅動模型&#xff0c;幫助開發者快速集成音頻功能。本篇文章以 WM8960 音頻編解碼器&#xf…

thinkphp5模型查詢數據庫,查出來的字段直接修改成另外的名字

在ThinkPHP5中,如果你希望在查詢數據庫時將返回的字段名直接修改為其他名稱,可以通過以下幾種方式實現: 方法1:使用 field 方法指定字段別名 在查詢時通過 field 方法直接為字段指定別名(使用 AS 關鍵字)。 示例代碼: // 使用Db類查詢 $result = Db::name(user)->…