數據結構與算法-算法-三數之和

題目:

15. 三數之和 - 力扣(LeetCode)15. 三數之和 - 給你一個整數數組 nums ,判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i != j、i != k 且 j != k ,同時還滿足 nums[i] + nums[j] + nums[k] == 0 。請你返回所有和為 0 且不重復的三元組。注意:答案中不可以包含重復的三元組。??示例 1:輸入:nums = [-1,0,1,2,-1,-4]輸出:[[-1,-1,2],[-1,0,1]]解釋:nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。不同的三元組是 [-1,0,1] 和 [-1,-1,2] 。注意,輸出的順序和三元組的順序并不重要。示例 2:輸入:nums = [0,1,1]輸出:[]解釋:唯一可能的三元組和不為 0 。示例 3:輸入:nums = [0,0,0]輸出:[[0,0,0]]解釋:唯一可能的三元組和為 0 。?提示: * 3 <= nums.length <= 3000 * -105 <= nums[i] <= 105http://link.dataword.cloud/1AwrSv

總結:
這個題還是比較難的,三數之和,兩數之和,看著差不多,但是要求呀這些還是很有差距的。題目描述就不多贅婿了。大家點擊我的短鏈接就能跳過去。

這個題的解法就是排序完,利用遞歸并定住一個數據,將三數之和變成,兩數之和,然后遞歸找解。


代碼示例:
?

    public static List<List<Integer>> threeSum2(int[] nums){Arrays.sort(nums);List<List<Integer>> result = new LinkedList<>();dfs2(3, 0, nums.length - 1, 0, nums,new LinkedList<>(), result);return result;}public static void dfs2(int n//用來控制 遞歸的結束條件(找到結果有n 個數),int i//左邊界,int j//右邊界,int target//目標值,int[] nums,//數組LinkedList<Integer> stack,//固定的數List<List<Integer>> result//結果){if(n == 2){//遞歸結束標志。就剩兩個數據就沒必要繼續了twoSum2(i, j, nums, target, stack, result);return ;}for (int k = i; k < j; k++) {if(k>i && nums[k] == nums[k-1]){ //檢查 k 的有效邊界,以及檢查重復continue;}//固定一個數據stack.push(nums[k]);dfs2(n-1,k+1,j,target - nums[k],nums,stack,result);//彈出固定的方法stack.pop();}}//找解的核心方法static public void twoSum2(int i, int j, int[] nums, int target,LinkedList<Integer> stack,List<List<Integer>> result) {while(i<j){//保持邊界int sum = nums[i]+nums[j];//調整邊界if(sum < target){i++;} else if (sum > target) {j--;}else {//找到解ArrayList<Integer> list = new ArrayList<>(stack);list.add(nums[i]);list.add(nums[j]);result.add(list);//繼續找(調整邊界)i++;j--;//這兩個是在找重復的,自己和自己前一個重復就跳走,重復沒意義while (i < j && nums[i] == nums[i - 1]) {i++;}while (i < j && nums[j] == nums[j + 1]) {j--;}}}}




視頻講解:

進階數據結構和算法-332-三數之和-Leetcode15_嗶哩嗶哩_bilibili進階數據結構和算法-332-三數之和-Leetcode15是大廠必備數據結構與算法Java視頻教程(下篇),java高級程序員必學的數據結構與算法的第178集視頻,該合集共計200集,視頻收藏或關注UP主,及時了解更多相關視頻內容。http://link.dataword.cloud/3qCztX黑馬講解的很透徹,建議看看,💪

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

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

相關文章

ASCOMP PDF Conversa:高效精準的PDF轉換工具

在日常工作和學習中&#xff0c;PDF文件因其格式穩定、兼容性強而被廣泛使用。然而&#xff0c;PDF文件的編輯性較差&#xff0c;常常需要將其轉換為可編輯的格式&#xff0c;如Word文檔。ASCOMP PDF Conversa作為一款功能強大的PDF轉換工具&#xff0c;能夠將PDF文件轉換成可編…

JAVA核心基礎篇-集合

想要了解集合&#xff0c;首先要知道一個東西&#xff0c;叫數據結構。所謂數據結構&#xff0c;其實就是計算機存儲&#xff0c;組織數據的方式。常用的數據結構有8大類數組&#xff0c;鏈表&#xff0c;樹&#xff0c;堆&#xff0c;棧&#xff0c;隊列&#xff0c;哈希表&am…

大模型——深度評測智能體平臺Coze Studio

深度評測智能體平臺Coze Studio 7 月底字節跳動的 Coze-Studio 正式開源,算是 AI 智能體領域的一個大事件。這個月終于有時間在內網環境進行了部署和評測,希望能為團隊的企業知識庫和 AI 應用建設提供多一個選項。 其實,我們廠的知識庫系統一直是自研的。沒有直接采用市面…

UE5打包,LoadObject加載不出網格|動畫

由于筆者UE5加載模型和動畫使用的動態加載&#xff08;LoadObject&#xff09;&#xff0c;而這些資源&#xff08;XX001、XX002 等&#xff09;沒有被任何關卡或藍圖直接引用&#xff0c;在編輯器狀態下是可以正常加載的&#xff0c;但它們在打包時被當作“無用”資源而排除了…

C 語言標準輸入輸出頭文件stdio.h及其常見用法

在這篇文章中&#xff0c;我們來詳細聊一聊 C 語言標準輸入輸出頭文件 stdio.h 及其常見用法。1. stdio.h 是什么 stdio.h&#xff08;Standard Input and Output Header&#xff09;是 C 標準庫中的一個頭文件&#xff0c;提供了處理標準輸入輸出和一些文件操作的函數聲明。 它…

Js逆向 拼夕夕anti_content

前言 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代碼&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01;本文章未經…

大模型時代為什么需要向量數據庫?

這里寫自定義目錄標題1. 向量數據庫2. 向量嵌入3. 特征和向量4. 相似性測量4.1 歐幾里得距離4.2 余弦相似度5. 相似性搜索5.1 K-Means5.2 基于文本嵌入進行意圖匹配6. 問答助手7. 意圖匹配1. 向量數據庫 向量數據庫&#xff08;Vector Database&#xff09;&#xff0c;也叫矢…

【Canvas與旗幟】二十角金盤德國旗

【成圖】【代碼】<!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>多角金盤德國旗 Draft1</title><style type"text/css&qu…

Linux軟件編程:總結

一、Linux系統概述&#xff08;一&#xff09;Linux系統概述&#xff08;二&#xff09;Linux系統簡介1.常見的Linux系統&#xff1f;2.Linux操作系統是操作系統的核心&#xff0c;也成為內核&#xff0c;內核的主要功能&#xff1f;3.shell是操作系統的外殼&#xff0c;主要作…

【51單片機學習】直流電機驅動(PWM)、AD/DA、紅外遙控(外部中斷)

一、直流電機驅動&#xff08;PWM&#xff09;1.直流電機介紹步進電機的旋轉速度完全由編碼的通電時間決定的&#xff0c;可以用于精密控制。 舵機內部是一個直流電機加一個控制器&#xff0c;引出三根線&#xff0c;分別是正負極和編碼線&#xff0c;根據輸出電平的時間來控制…

ComfyUI Portrait Master肖像大師中文版

本文轉載自&#xff1a;ComfyUI Portrait Master肖像大師中文版 - Hello123工具導航 ** 一、產品定位與技術架構 肖像大師中文版是專為 AI 繪畫工具設計的提示詞生成插件&#xff0c;通過結構化參數控制實現精準人物肖像生成。它基于 ComfyUI 平臺開發&#xff0c;提供 193 國…

(Redis)內存淘汰策略

1. 為什么需要內存淘汰策略&#xff1f;Redis 是一個基于內存的高性能數據庫&#xff0c;所有數據都存儲在內存中。優點&#xff1a;讀寫速度極快。缺點&#xff1a;內存有限&#xff0c;存滿之后如果繼續寫入&#xff0c;就必須有一套策略來決定“刪掉誰&#xff0c;留下誰”。…

Eclipse 里Mybatis的xml的頭部報錯

需要進行Eclipse 配置 MyBatis 的DTD文件Window -> Preference -> Maven -> 勾選 (download artifact javadoc).

SpringBoot Web快速入門_從零搭建你的第一個Web應用

在 Java 企業級開發領域&#xff0c;SpringBoot 以其 “約定優于配置” 的理念徹底革新了傳統 Spring 應用的開發模式。根據 2023 年 JetBrains 開發者調查報告&#xff0c;超 65% 的 Java 開發者將 SpringBoot 選為 Web 開發的首選框架。其優勢顯著&#xff1a;快速啟動&#…

手持 Mid360 + RealSense 相機 + Jetson Orin 一體平臺

這篇博客是我們開源的一個項目介紹&#xff0c;包括3D結構件 STP 文件與常見 SLAM 工程在 Arm 設備上編譯手冊等&#xff0c;將 Livox Mid360、Realsense 相機、Nvidia Jetson Orin、定制電池放在了一個手持設備上&#xff0c;同時這個手持設備預留了底部螺紋孔&#xff0c;當你…

H7-TOOL固件2.31發布,支持250M示波器,支持IAR下載算法加載運行,上位機支持UTF-8編碼,增加多款脫機燒錄芯片支持

【PC軟件】V2.3.1 1. 脫機燒錄功能更新: - 添加芯片: - 自動填充文件名、Flash地址、Flash大小、SRAM地址和SRAM大小 - FLM算法文件不支持自動填寫文件名&#xff0c;當生成文件后需要手動更新 - 廠商列表欄鼠標右鍵菜單可復制廠商名 - 修復添加芯片排列次序的問題…

自然語言處理——06 遷移學習(上)

1 fasttext工具介紹 1.1 介紹 fasttext 是 Facebook AI Research&#xff08;FAIR&#xff09;開發的開源 NLP 工具包&#xff0c;專門用來解決文本相關任務&#xff0c;比如情感分析、文本分類&#xff08;判斷新聞屬于體育/財經等&#xff09;、識別“人名/地名”這類實體&a…

數據庫MVCC是什么

問題數據庫MVCC是什么我的回答MVCC&#xff0c;全稱是"多版本并發控制"(Multi-Version Concurrency Control)&#xff0c;是數據庫管理系統中常用的一種并發控制技術。說白了&#xff0c;它就是通過維護數據的多個版本&#xff0c;讓讀操作不會被寫操作阻塞&#xff…

游戲廣告投放數據分析項目:拆解投放的“流量密碼”

用數據說話&#xff1a;1441條投放記錄拆解游戲廣告投放的“流量密碼”一、數據概況 & 處理思路 先放一張數據全家福&#xff0c;字段 13 個&#xff0c;樣本 1441 條&#xff0c;缺失值 0&#xff0c;只做了一件事&#xff1a;把“未知大小”“無”等臟數據清洗掉。 impor…

數據庫服務語句應用

文章目錄&#x1f31f;數據庫語句應用介紹&#x1f340;數據庫語句分類介紹DDL&#xff08;Data Definition Language&#xff09;數據定義語言DCL&#xff08;Data Control Language&#xff09;數據控制語言DML&#xff08;Data Manipulation Language&#xff09;數據操作語…