給出 a, b, c, d 四個整數列表,計算有多少的tuple(i, j, k, l)
滿足a[i] + b[j] + c[k] + d[l]
為 0。
為了簡化問題,a, b, c, d 具有相同的長度,且長度n滿足 0 ≤ n ≤ 500。所有的整數都在範圍(-2^28, 2^28 - 1)內以及保證結果最多為2^31 - 1。
例1:
輸入:
a = [ 1, 2]
b = [-2,-1]
c = [-1, 2]
d = [ 0, 2]
輸出:2
解釋:這兩個tuple為:
1. (0, 0, 0, 1) -> a[0] + b[0] + c[0] + d[1] = 1 + (-2) + (-1) + 2 = 0
2. (1, 1, 0, 0) -> a[1] + b[1] + c[0] + d[0] = 2 + (-1) + (-1) + 0 = 0
例2:
輸入:
a = [0]
b = [0]
c = [0]
d = [0]
輸出:1
如果是暴力解法,時間複雜度為o(n^4),空間複雜度為o(1),明顯不可行。
如果是遍歷a,b,c,將d放入雜湊表中查詢,時間複雜度為o(n^3),空間複雜度為o(n),還有優化餘地。
如果是遍歷a,b,將c+d的結果放入雜湊表中,時間複雜度為o(n^2),空間複雜度為o(n^2),可行。
public class solution
}int res = 0;
for(int i=0; i}
return res;
}}
兩次過 Lintcode 56 兩數之和
給乙個整數陣列,找到兩個數使得他們的和等於乙個給定的數 target。你需要實現的函式twosum需要返回這兩個數的下標,並且第乙個下標小於第二個下標。注意這裡下標的範圍是 0 到 n 1。example1 給出 numbers 2,7,11,15 target 9,返回 0,1 example2 ...
兩次過 Lintcode 1209 構造矩形
對於乙個web開發者,如何設計頁面大小很重要。所以,給定乙個矩形大小,設計其長 l 寬 w 使其滿足如下要求 1.矩形區域大小需要和給定目標相等。2.寬度w不大於長度l,也即l w.3.長和寬的差異盡可能的小。返回設計好的長度l和寬度w。樣例 輸入 4 輸出 2,2 解釋 目標區域是4,所有可能的構...
兩次過 Lintcode 212 空格替換
設計一種方法,將乙個字串中的所有空格替換成 20。你可以假設該字串有足夠的空間來加入新的字元,且你得到的是 真實的 字元長度。你的程式還需要返回被替換後的字串的長度。對於字串 mr john smith 長度為13 替換空格之後,引數中的字串需要變為 mr 20john 20smith 並且把新長度...