1. 程式人生 > >[leetcode javascript解題]3Sum

[leetcode javascript解題]3Sum

leetcode 第15題”3Sum”描述如下:

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note: The solution set must not contain duplicate triplets.
For example, given array S = [-1, 0, 1, 2, -1, -4],
A solution set is:
[
[-1, 0, 1],
[-1, -1, 2]
]

這道題要從一個整數陣列中找到三個數加起來值為0的陣列集合,集合暴力解法想必很簡單就是一個O(n^3)的迴圈,但是結果肯定是超時,無法被accepted的。一個O(n^2)的解法如下,首先把數進行從小到大排序,接著進行遍歷,以當前遍歷的數為target,再引入兩個指標,一個指向最小數,一個指向最大數。當兩數之和小於-target,移動low指標,反之移動high指標。需要注意的是為了避免重複,在選取target和移動指標時,需要增加判斷條件。

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var threeSum = function(nums) {
    nums.sort(function(a,b){
        return
a-b; }) var target,result=[],len=nums.length; for(var i=0;i<len;i++){ if (target===nums[i]){ continue; } else{ target=nums[i]; } var low=i+1,high=len-1; while(low<high){ if(nums[low]+nums[high]===-target){ result.push([target,nums[low],nums[high]]); do{ low++; }while
(nums[low]===nums[low-1]); } else if(nums[low]+nums[high]<-target){ low++; } else{ high--; } } } return result; };

有什麼問題歡迎與我溝通交流!

相關推薦

[leetcode javascript解題]3Sum

leetcode 第15題”3Sum”描述如下: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all uniq

LeetCode javascript解題心得 第7題 反轉整數

題目如下 給定一個 32 位有符號整數,將整數中的數字進行反轉。 輸入: 123 輸出: 321 解題思路: 之前的思路是想把單個數字逐一跳出來存放到陣列中再重新排列,但是這種演算法無論是時間複雜度還是空間複雜度都很糟糕,這裡介紹一種便讀取邊拼接的演算法。。 v

LeetCode javascript解題心得 第20題 有效的括號

題目如下: 給定一個只包括 '(',')','{','}','[',']' 的字串,判斷字串是否有效。 有效字串需滿足: 左括號必須用相同型別的右括號閉合。 左括號必須以正確的順序閉合。 注意空字串可被認為是有效字串。 示例 1: 輸入: "()" 輸出: tru

[leetcode javascript解題]Swap Nodes in Pairs

leetcode 24題 “ Swap Nodes in Pairs”描述如下: Given a linked list, swap every two adjacent nodes and return its head. For example

LeetCode】15. 3Sum 解題報告(Python)

題目描述: Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in

leetcode筆記:3Sum Closest

組合 function mod 閾值 速度 ddc pan asc con 一.題目描寫敘述 二.解題技巧 該題與3Sum的要求類似。不同的是要求選出的組合的和與目標值target最接近而不一定相等。但實際上,與3Sum的算法流程思路類似,先是進

Leetcode之15. 3Sum (medium)

二層 固定 寫法 tar || 循環 ont 大於 amp 15. 3Sum (medium) 描述 Given an array nums of n integers, are there elements a, b, c in nums such that a + b

LeetCode】16. 3Sum Closest - Java實現

文章目錄 1. 題目描述: 2. 思路分析: 3. Java程式碼: 1. 題目描述: Given an array nums of n integers and an integer target, find three inte

LeetCode】15. 3Sum - Java實現

文章目錄 1. 題目描述: 2. 思路分析: 3. Java程式碼: 1. 題目描述: Given an array nums of n integers, are there elements a, b, c in nums su

leetcode】16 3Sum Closest

描述 給定一個數字集合 S 以及一個數字 target,需要從集合中找出3個數字的和與這個 target的值最接近(絕對值最小) 樣例 Input: S = [-1, 2, 1, -4], target = 1 Output: 2 思路 首先排序,之後確定一個數字的前提下,再利用雙指標從兩端

leetcode javascript 羅馬數字轉整數

羅馬數字包含以下七種字元:I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L 50 C 100 D

[LeetCode javaScript] 860. 檸檬水找零

在檸檬水攤上,每一杯檸檬水的售價為 5 美元。 顧客排隊購買你的產品,(按賬單 bills 支付的順序)一次購買一杯。 每位顧客只買一杯檸檬水,然後向你付 5 美元、10 美元或 20 美元。你必須給每個顧客正確找零,也就是說淨交易是每位顧客向你支付 5 美

[LeetCode javaScript] 118. 楊輝三角

給定一個非負整數 numRows,生成楊輝三角的前 numRows 行。 在楊輝三角中,每個數是它左上方和右上方的數的和。 示例: 輸入: 5 輸出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] /** *

[LeetCode javaScript] 896. 單調數列

如果陣列是單調遞增或單調遞減的,那麼它是單調的。 如果對於所有 i <= j,A[i] <= A[j],那麼陣列 A 是單調遞增的。 如果對於所有 i <= j,A[i]> = A[j],那麼陣列 A 是單調遞減的。 當給定的陣列 A 是

[LeetCode javaScript] 804. 唯一摩爾斯密碼詞

國際摩爾斯密碼定義一種標準編碼方式,將每個字母對應於一個由一系列點和短線組成的字串, 比如: “a” 對應 “.-”, “b” 對應 “-…”, “c” 對應 “-.-.”, 等等。 為了方便,所有26個英文字母對應摩爾斯密碼錶如下: [".-","-…","-

[LeetCode javaScript] 108. 將有序陣列轉換為二叉搜尋樹

將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null

[LeetCode javaScript] 242. 有效的字母異位詞

給定兩個字串 s 和 t ,編寫一個函式來判斷 t 是否是 s 的一個字母異位詞。 示例 1: 輸入: s = “anagram”, t = “nagaram” 輸出: true 示例 2: 輸入: s = “rat”, t = “car” 輸出: false

[LeetCode javaScript] 179. 最大數

給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。 示例 1: 輸入: [10,2] 輸出: 210 示例 2: 輸入: [3,30,34,5,9] 輸出: 9534330 說明: 輸出結果可能非常大,所以你需要返回一個字串而不是整數。 /** *

[LeetCode javaScript] 824. 山羊拉丁文

給定一個由空格分割單詞的句子 S。每個單詞只包含大寫或小寫字母。 我們要將句子轉換為 “Goat Latin”(一種類似於 豬拉丁文 - Pig Latin 的虛構語言)。 山羊拉丁文的規則如下: 如果單詞以母音開頭(a, e, i, o, u),在單詞後新增"

[LeetCode javaScript] 107. 二叉樹的層次遍歷 II

給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷) 例如: 給定二叉樹 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回其自底向上的層次遍歷為: [ [