lintcode 同和分割陣列

2021-09-20 10:05:44 字數 1090 閱讀 8096

給定乙個有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.

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

3637

38

class solution 

for (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,而不僅僅只...