欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Leetcode:15.三數(shù)之和(C++)-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)是專業(yè)的薩迦網(wǎng)站建設(shè)公司,薩迦接單;提供做網(wǎng)站、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行薩迦網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

問題描述:

實(shí)現(xiàn)代碼:


問題描述:

給你一個整數(shù)數(shù)組?nums,判斷是否存在三元組?[nums[i], nums[j], nums[k]]滿足?i != ji != k且?j != k,同時還滿足?nums[i] + nums[j] + nums[k] == 0。請

你返回所有和為?0且不重復(fù)的三元組。

注意:答案中不可以包含重復(fù)的三元組。

示例 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 。
實(shí)現(xiàn)代碼:

雙指針法

class Solution {
public:
    vector>threeSum(vector& nums) 
    {
        vector>result;//用于返回
        sort(nums.begin(),nums.end());//先將其排序
        for(int i=0;i0)
            {
                return result;
            }
            //對i指針去重
            if(i>0&&nums[i]==nums[i-1])
            {
                continue;
            }
            int left=i+1;
            int right=nums.size()-1;
            while(left0) right--;
                else if(nums[i]+nums[left]+nums[right]<0) left++;
                else
                {
                    result.push_back(vector{nums[i],nums[left],nums[right]});
                    //left指針去重
                    while(left

我們先給數(shù)組排序,然后用一個循環(huán)來遍歷數(shù)組,這個遍歷指針i就為第一個指針,然后定義left指針指向i后面一個數(shù),right指針指向數(shù)組中最后一個數(shù)nums.size()-1。

然后就是最重要的去重操作。

首先對于指針i去重:

if(i>0&&nums[i]==nums[i-1])
            {
                continue;
            }

當(dāng)指針i指向的數(shù)與其前一個數(shù)相同時,直接continue跳出此次循環(huán),直接進(jìn)行下一次循環(huán)。這里為什么不是與其后一個數(shù)相比而是與前一個數(shù)相比呢,因?yàn)槿绻呛秃笠粋€數(shù)相比,會直接在第一次遇到這個數(shù)的時候就跳出循環(huán),導(dǎo)致指針i指向這個數(shù)的情況沒有記錄到,所以這里要與前一個數(shù)相比。

然后是對于指針left和指針right去重:

//left指針去重
while(left

當(dāng)left指向的數(shù)與其后一個數(shù)相同時,向右移動left。

當(dāng)right指向的數(shù)與其前一個數(shù)相同時,想左移動right。

最后left++,right--,使其指向第一個不同的數(shù)。

至于為什么不把這個兩個去重條件一開始就寫在while循環(huán)里呢,原因和上面i指針的一樣,至少要記錄一次然后再判斷,全跳過去不就一次都沒用這個數(shù)了么。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

本文標(biāo)題:Leetcode:15.三數(shù)之和(C++)-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://chinadenli.net/article46/hpoeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作品牌網(wǎng)站設(shè)計(jì)網(wǎng)站導(dǎo)航域名注冊面包屑導(dǎo)航ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)