leetcode 18. 四數之和(雙指針)

給定一個包含 n 個整數的數組 nums 和一個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d ,使得 a + b + c + d 的值與 target 相等?找出所有滿足條件且不重復的四元組。

注意:

答案中不可以包含重復的四元組。

示例:

給定數組 nums = [1, 0, -1, 0, -2, 2],和 target = 0。

滿足要求的四元組集合為:
[
[-1, 0, 0, 1],
[-2, -1, 1, 2],
[-2, 0, 0, 2]
]

代碼

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> con=new ArrayList<>();int n=nums.length;Arrays.sort(nums);//排序for(int i=0;i<n-3;i++)//遍歷第一個數{if(i>0&&nums[i]==nums[i-1]) continue;//排除重復的if(nums[i]+nums[n-1]+nums[n-2]+nums[n-3]<target)continue;//nums【i】太小了 遍歷下一個數if(nums[i]+nums[i+1]+nums[i+2]+nums[i+3]>target)break;//nums【i】太大了 不可能找到滿足的for(int j=i+1;j<n-2;j++){if(j>i+1&&nums[j]==nums[j-1]) continue;if(nums[i]+nums[n-1]+nums[n-2]+nums[j]<target)continue;if(nums[i]+nums[i+1]+nums[i+2]+nums[j]>target)break;int l=j+1,r=n-1;//左右指針查找while (l<r){int sum=nums[l]+nums[r]+nums[i]+nums[j];if(sum==target){con.add(Arrays.asList(nums[i],nums[j],nums[l],nums[r]));//加入結果while (l<r&&nums[l]==nums[l+1])l++;l++;while (l<r&&nums[r]==nums[r-1])r--;r--;//將相同的數字排除,避免重復}else if(sum<target)//目前的sum太小 l指針向左移動 增大suml++;else r--;}}}return con;}
}

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

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

相關文章

WPF:從WPF Diagram Designer Part 4學習分組、對齊、排序、序列化和常用功能

在前面三篇文章中我們介紹了如何給圖形設計器增加移動、選擇、改變大小及面板、縮略圖、框線選擇和工具箱和連接等功能&#xff0c;本篇是這個圖形設計器系列的最后一篇&#xff0c;將和大家一起來學習一下如何給圖形設計器增加分組、對齊、排序、序列化等功能。 WPF Diagram D…

win7如何看計算機用戶名和密碼怎么辦,win7系統電腦查看共享文件夾時不顯示用戶名和密碼輸入窗口的解決方法...

win7系統使用久了&#xff0c;好多網友反饋說win7系統電腦查看共享文件夾時不顯示用戶名和密碼輸入窗口的問題&#xff0c;非常不方便。有什么辦法可以永久解決win7系統電腦查看共享文件夾時不顯示用戶名和密碼輸入窗口的問題&#xff0c;面對win7系統電腦查看共享文件夾時不顯…

ASP.NET Core跨域設置

項目中經常會遇到跨域問題&#xff0c;解決方法&#xff1a; 在appsettings.json 文件中添加json項 {"Logging": {"LogLevel": {"Default": "Warning"}},"AllowedHosts": "*","AppCores": "https…

微信客戶端<->騰訊微信服務器<->開發者服務器

出自 http://blog.csdn.net/hanjingjava/article/details/41653113 首先&#xff0c;通過Token驗證&#xff0c;將公眾號接入開發者服務器&#xff0c;這樣客戶端發給公眾號的信息會被轉發給開發者服務器&#xff1b; 第二&#xff0c;組裝微信特定消息格式&#xff0c;返回給用…

idea提高調試超時_如何提高您的調試技能

idea提高調試超時by Nick Karnik尼克卡尼克(Nick Karnik) 如何提高您的調試技能 (How to Improve Your Debugging Skills) All of us write code that breaks at some point. That is part of the development process. When you run into an error, you may feel that you do…

leetcode 834. 樹中距離之和(dp)

給定一個無向、連通的樹。樹中有 N 個標記為 0...N-1 的節點以及 N-1 條邊 。第 i 條邊連接節點 edges[i][0] 和 edges[i][1] 。返回一個表示節點 i 與其他所有節點距離之和的列表 ans。示例 1:輸入: N 6, edges [[0,1],[0,2],[2,3],[2,4],[2,5]] 輸出: [8,12,6,10,10,10] 解…

CSS設計指南(讀書筆記 - 背景)

本文轉自william_xu 51CTO博客&#xff0c;原文鏈接&#xff1a;http://blog.51cto.com/williamx/1140006&#xff0c;如需轉載請自行聯系原作者

在計算機網絡中 帶寬是什么,在計算機網絡中,“帶寬”用____表示。

答案查看答案解析:【解析題】計算機的發展經歷了4個時代&#xff0c;各個時代劃分的原則是根據()。【解析題】計算機網絡的最主要的功能是______。【解析題】馮.諾依曼提出的計算機工作原理為____。【解析題】計算機的通用性使其可以求解不同的算術和邏輯問題&#xff0c;這主要…

如何在iOS上運行React Native應用

by Soujanya PS通過Soujanya PS 如何在iOS上運行React Native應用 (How to run a React Native app on iOS) I recently started to develop a React-Native app on iOS. This was my first foray into native app development. I was surprised by the ease and level of abs…

導出excel 后 頁面按鈕失效(頁面假死)

在 page_load 里加上如下代碼&#xff1a;string beforeSubmitJS "\nvar exportRequested false; \n"; beforeSubmitJS "var beforeFormSubmitFunction theForm.onsubmit;\n"; beforeSubmitJS "theForm.onsubmit function(){ \n"; …

Mysql分組查詢group by語句詳解

(1) group by的含義:將查詢結果按照1個或多個字段進行分組&#xff0c;字段值相同的為一組(2) group by可用于單個字段分組&#xff0c;也可用于多個字段分組 select * from employee; --------------------------------------------- | num | d_id | name | age | sex | homea…

leetcode 75. 顏色分類(雙指針)

給定一個包含紅色、白色和藍色&#xff0c;一共 n 個元素的數組&#xff0c;原地對它們進行排序&#xff0c;使得相同顏色的元素相鄰&#xff0c;并按照紅色、白色、藍色順序排列。 此題中&#xff0c;我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 注意: 不能使用代碼…

火車頭如何才能設置發布的時候,如果是有html代碼就直接的轉換掉,互聯網上笑話抽取及排重---火車頭采集器的使用和MD5算法的應用...

10011311341 呂濤、10011311356李紅目的&#xff1a;通過熟悉使用火車頭采集器&#xff0c;在網絡上采取3萬條笑話并進行排重&#xff0c;以此來熟悉web文本挖掘的一些知識。過程&#xff1a;本次學習&#xff0c;主要分成兩個部分。第一部分是笑話文本的采集&#xff0c;第二部…

Tcp_wrapper

在Linux進程分為&#xff1a;獨立進程和非獨立進程非獨立進程&#xff1a;是依賴于超級守護進程的進程&#xff0c; 且受Xinetd 管理&#xff0c;并在啟動服務時 必須啟動例子&#xff1a;#chkconfig –level 2345 telnetd on關與chkconfig 的命令&#xff1a;#chkconfig –lis…

angular 動畫_如何在Angular 6中使用動畫

angular 動畫介紹 (Introduction) Animation is defined as the transition from an initial state to a final state. It is an integral part of any modern web application. Animation not only helps us create a great UI but it also makes the application interesting…

win10上面安裝win7的虛擬機怎么相互ping通

最近干了一些很蛋疼的事&#xff0c;這些都是自己踩過的坑&#xff0c;記錄下來方便自己以后查閱 首先我的目的就是為了在自己的PC機上面部署一個SVN服務器&#xff0c;然后安裝一個客戶端&#xff0c;自己寫的軟件就可以定期入庫&#xff0c;做好自己的版本控制&#xff0c;但…

新東方面試知識點記錄

3.spring mvc 怎么接受http post 方式提交過來的xml數據&#xff1f;servlet中怎么接受&#xff1f; RequestMapping(value"/jsonPrase", headers {"content-typeapplication/json","content-typeapplication/xml"}) ResponseBody …

win10用計算機名訪問文件夾,win10系統提示你當前無權訪問該文件夾的解決方法【圖文教程】...

Win10系統下&#xff0c;我們在訪問或更改某些系統文件夾時&#xff0c;有時會遇到系統提示“你當前無權訪問該文件夾”的情況。那么&#xff0c;遇到這種情況的話&#xff0c;我們該怎么辦呢&#xff1f;接下來&#xff0c;小編就向大家分享win10系統提示“你當前無權訪問該文…

.Net Micro Framework研究—實現SideShow窗體界面

基于MF系統的Windows SideShow界面是非常炫的&#xff08;如下圖&#xff09;。既然微軟能用.Net Micro Framework實現這么棒的界面效果&#xff0c;我想我們也能做到。 &#xff08;SideShow模擬器界面和游戲程序中的右鍵菜單—注意菜單彈出后&#xff0c;其它的界面變暗了&am…

leetcode 344. 反轉字符串

編寫一個函數&#xff0c;其作用是將輸入的字符串反轉過來。輸入字符串以字符數組 char[] 的形式給出。 不要給另外的數組分配額外的空間&#xff0c;你必須原地修改輸入數組、使用 O(1) 的額外空間解決這一問題。 你可以假設數組中的所有字符都是 ASCII 碼表中的可打印字符。…