国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【每日一題Day266】LC18四數(shù)之和 | 排序+雙指針

這篇具有很好參考價值的文章主要介紹了【每日一題Day266】LC18四數(shù)之和 | 排序+雙指針。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

四數(shù)之和【LC18】

給你一個由 n 個整數(shù)組成的數(shù)組 nums ,和一個目標(biāo)值 target 。請你找出并返回滿足下述全部條件且不重復(fù)的四元組 [nums[a], nums[b], nums[c], nums[d]] (若兩個四元組元素一一對應(yīng),則認(rèn)為兩個四元組重復(fù)):

  • 0 <= a, b, c, d < n
  • a、bcd 互不相同
  • nums[a] + nums[b] + nums[c] + nums[d] == target

你可以按 任意順序 返回答案 。

類似題目

排序+雙指針
  • 思路

    類似三數(shù)之和,先將數(shù)組排序,然后固定兩個數(shù) n u m s [ a ] , n u m s [ b ] nums[a],nums[b] nums[a],nums[b],然后在區(qū)間 [ b + 1 , n ? 1 ] [b+1,n-1] [b+1,n?1]使用雙指針?biāo)阉魇欠裼袃蓴?shù)之和為 t a r g e t ? n u m s [ a ] ? n u m s [ b ] target-nums[a]-nums[b] target?nums[a]?nums[b],如果有則記錄答案;否則根據(jù)大小,右移左指針或者左移右指針。

    • 注意去重以及溢出
    • 優(yōu)化:
      • 判斷最小四元組是否大于target,是則break
      • 判斷最大四元組是否小于target,實則continue
  • 實現(xiàn)

    class Solution {
        public List<List<Integer>> fourSum(int[] nums, int target) {
            List<List<Integer>> res = 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;
                long x = nums[i];
                if (x + nums[i + 1] + nums[i + 2] + nums[i + 3] > target) break;
                if (x + nums[n - 1] + nums[n - 2] + nums[n - 3] < target) continue;
                for (int j = i + 1; j < n - 2; j++){
                    if (j > i + 1 && nums[j] == nums[j - 1]) continue;
                    long sum2 = nums[i] + nums[j];
                    int l = j + 1, r = n - 1;
                    long num = target - sum2;
                    while (l < r){
                        if (nums[l] + nums[r] == num){
                            res.add(Arrays.asList(nums[i], nums[j], nums[l], nums[r]));                       
                            l++;
                            while (l < n && nums[l - 1] == nums[l]){
                                l++;
                            }
                            r--;
                            while (r > l && nums[r + 1] == nums[r]){
                                r--;
                            }
                        }else if (nums[l] + nums[r] > num){
                            r--;
                        }else{
                            l++;
                        }
                    }
                }
            }
            return res;
        }
    }
    
    • 復(fù)雜度文章來源地址http://www.zghlxwxcb.cn/news/detail-568306.html

      • 時間復(fù)雜度: O ( n l o g n + n 2 ) O(nlogn+n^2) O(nlogn+n2),其中 n是數(shù)組的長度。排序所需的時間復(fù)雜度一般為 O ( n l o g n ) O(nlogn) O(nlogn),查找三元組的時間復(fù)雜度為 O ( n 3 ) O(n^3) O(n3),因此時間復(fù)雜度為 O ( n 3 ) O(n^3) O(n3)
      • 空間復(fù)雜度: O ( 1 ) O(1) O(1)

到了這里,關(guān)于【每日一題Day266】LC18四數(shù)之和 | 排序+雙指針的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【每日一題Day282】LC2681英雄力量 | 排序+數(shù)學(xué)

    給你一個下標(biāo)從 0 開始的整數(shù)數(shù)組 nums ,它表示英雄的能力值。如果我們選出一部分英雄,這組英雄的 力量 定義為: i0 , i1 ,… ik 表示這組英雄在數(shù)組中的下標(biāo)。那么這組英雄的力量為 max(nums[i0],nums[i1] ... nums[ik])2 * min(nums[i0],nums[i1] ... nums[ik]) 。 請你返回所有可能的 非空

    2024年02月14日
    瀏覽(22)
  • 2023-07-15 LeetCode每日一題(四數(shù)之和)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 給你一個由 n 個整數(shù)組成的數(shù)組 nums ,和一個目標(biāo)值 target 。請你找出并返回滿足下述全部條件且 不重復(fù) 的四元組 [nums[a], nums[b], nums[c], nums[d]] (若兩個四元組元素一一對應(yīng),則認(rèn)為兩個四元組重復(fù)): 0 = a, b, c, d n a、b、c 和 d 互不相同 nums[a] + nums[b]

    2024年02月16日
    瀏覽(26)
  • 【力扣每日一題】2023.7.15 四數(shù)之和

    【力扣每日一題】2023.7.15 四數(shù)之和

    這題和本月出過的每日一題:兩數(shù)之和,三數(shù)之和類似。 不夸張的說只要把三數(shù)之和的代碼拿來再套層for循環(huán)改改就可以了。 不過我這里還是簡單捋一捋思路,題目給一個數(shù)組,要求返回所有長度為4,總和為 target 的子數(shù)組(不用連續(xù))。 比較容易想到的是暴力解法,直接

    2024年02月16日
    瀏覽(20)
  • 【算法】排序+雙指針——leetcode三數(shù)之和、四數(shù)之和

    【算法】排序+雙指針——leetcode三數(shù)之和、四數(shù)之和

    三數(shù)之和 (1)排序+雙指針 ??算法思路: 和之前的兩數(shù)之和類似,我們對暴力枚舉進(jìn)行了一些優(yōu)化,利用了 排序+雙指針 的思路: ??我們先排序,然后固定?個數(shù) a ,接著我們就可以在這個數(shù)后面的區(qū)間內(nèi),使用之前兩數(shù)之和使用的算法,快速找到兩個數(shù)之和和固定的

    2024年02月13日
    瀏覽(31)
  • 【算法挨揍日記】day04——15. 三數(shù)之和、18. 四數(shù)之和

    【算法挨揍日記】day04——15. 三數(shù)之和、18. 四數(shù)之和

    ? 15.?三數(shù)之和 https://leetcode.cn/problems/3sum/ 給你一個整數(shù)數(shù)組? nums ?,判斷是否存在三元組? [nums[i], nums[j], nums[k]] ?滿足? i != j 、 i != k ?且? j != k ?,同時還滿足? nums[i] + nums[j] + nums[k] == 0 ?。請你返回所有和為? 0 ?且不重復(fù)的三元組。 注意: 答案中不可以包含重復(fù)的三元

    2024年02月09日
    瀏覽(26)
  • 【算法專題--雙指針?biāo)惴ā縧eecode-15.三數(shù)之和(medium)、leecode-18. 四數(shù)之和(medium)

    【算法專題--雙指針?biāo)惴ā縧eecode-15.三數(shù)之和(medium)、leecode-18. 四數(shù)之和(medium)

    ??你好,我是 RO-BERRY ?? 致力于C、C++、數(shù)據(jù)結(jié)構(gòu)、TCP/IP、數(shù)據(jù)庫等等一系列知識 ??感謝你的陪伴與支持 ,故事既有了開頭,就要畫上一個完美的句號,讓我們一起加油 雙指針 常見的雙指針有兩種形式,一種是對撞指針,?種是左右指針。 對撞指針:一般用于順序結(jié)構(gòu)中

    2024年04月09日
    瀏覽(20)
  • 每日一題——三數(shù)之和(雙指針)

    每日一題——三數(shù)之和(雙指針)

    題目鏈接 思路 解析函數(shù)原型 首先我們來看一下題目給的函數(shù)原型: 題目要求我們 返回一個二維數(shù)組,數(shù)組的行數(shù)代表著存在多少個滿足條件的三元組,而在本題中,列數(shù)規(guī)定為3,即每行存儲3個元素 在螺旋矩陣中我們已經(jīng)做過分析, nums就是題目給的整數(shù)數(shù)組,numsSize就是

    2024年02月07日
    瀏覽(23)
  • (雙指針 ) 15. 三數(shù)之和 ——【Leetcode每日一題】

    (雙指針 ) 15. 三數(shù)之和 ——【Leetcode每日一題】

    難度:中等 給你一個整數(shù)數(shù)組 nums ,判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i != j 、 i != k 且 j != k ,同時還滿足 nums[i] + nums[j] + nums[k] == 0 。請 你返回所有和為 0 且不重復(fù)的三元組。 注意 :答案中不可以包含重復(fù)的三元組。 示例 1: 輸入:nums = [-1,0,1,2,-1,-4] 輸出:

    2024年02月09日
    瀏覽(17)
  • 【每日一題Day168】LC2427公因子的數(shù)目 | 模擬

    給你兩個正整數(shù) a 和 b ,返回 a 和 b 的 公 因子的數(shù)目。 如果 x 可以同時整除 a 和 b ,則認(rèn)為 x 是 a 和 b 的一個 公因子 。 簡單模擬 感謝力扣 今天還要開會 我恨 感覺習(xí)慣真的很容易突然改變 前段時間還是看英文題目的 突然每一天就沒有看英文題了 然后這個習(xí)慣就沒有了

    2023年04月08日
    瀏覽(27)
  • 【每日一題Day222】LC1110刪點(diǎn)成林 | dfs后序

    給出二叉樹的根節(jié)點(diǎn) root ,樹上每個節(jié)點(diǎn)都有一個不同的值。 如果節(jié)點(diǎn)值在 to_delete 中出現(xiàn),我們就把該節(jié)點(diǎn)從樹上刪去,最后得到一個森林(一些不相交的樹構(gòu)成的集合)。 返回森林中的每棵樹。你可以按任意順序組織答案。 又是一段瓶頸期 2023/5/30 思路 遍歷樹時,如果

    2024年02月07日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包