給定乙個有n個整數的陣列,需要找到滿足以下條件的三胞胎(i, j, k):
0 < i, i + 1 < j, j + 1 < k < n - 1
每個子陣列的和(0,i - 1), (i + 1, j - 1), (j + 1, k - 1)和(k + 1, n - 1)應該相等。我們定義子陣列(l, r)表示原始陣列從元素索引l到元素索引r的一部分。
給定 nums = [1,2,1,2,1,2,1], 返回 true
解釋:i = 1, j = 3, k = 5.
sum(0, i - 1) = sum(0, 0) = 1
sum(i + 1, j - 1) = sum(2, 2) = 1
sum(j + 1, k - 1) = sum(4, 4) = 1
sum(k + 1, n - 1) = sum(6, 6) = 1
最簡單的就是遍歷完所有的ijk,但是複雜的是on^3,相當的高,可以使用j的遍歷來代替k,即,j在尋找到乙個區間與第乙個區間相等後,繼續往後搜尋,如果再出現乙個,就可以判斷最後乙個區間是否也符合。複雜度是on\^2.
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
38
class solutionfor (int i = 1; i < nums.size(); i++)
if (index == 2)
break;
}if (index == 2 && j != nums.size() &&sum == (presum[presum.size() - 1] - presum[j+1]))
return true;
}return false;}};
-------------end of file
thanks for reading-------------
LintCode 分割字串
給乙個字串,你可以選擇在乙個字元或兩個相鄰字元之後拆分字串,使字串由僅乙個字元或兩個字元組成,輸出所有可能的結果 給乙個字串 123 返回 1 2 3 12 3 1 23 遞迴,和lintcode 號碼的字母組合類似。如下 public class solution public void recu...
lintcode 1368 相同數字
給乙個陣列,如果陣列中存在相同數字,且相同數字的距離小於給定值k,輸出yes,否則輸出no。注意事項 輸入的陣列長度為n,保證n 100000。陣列元素的值為x,0 x 1e9。輸入的k滿足 1 k n。您在真實的面試中是否遇到過這個題?樣例給出 array 1,2,3,1,5,9,3 k 4,返回...
LintCode 陣列劃分
給出乙個整數陣列nums和乙個整數k。劃分陣列 即移動陣列nums中的元素 使得 返回陣列劃分的位置,即陣列中第乙個位置i,滿足nums i 大於等於k。您在真實的面試中是否遇到過這個題?yes 樣例給出陣列nums 3,2,2,1 和 k 2,返回 1 注意你應該真正的劃分陣列nums,而不僅僅只...