LeetCode 22 將陣列分成和相等的三個部分

2022-06-29 05:39:08 字數 1101 閱讀 7773

題目描述

給你乙個整數陣列 a,只有可以將其劃分為三個和相等的非空部分時才返回 true,否則返回 false。

形式上,如果可以找出索引 i+1 < j 且滿足 (a[0] + a[1] + ... + a[i] == a[i+1] + a[i+2] + ... + a[j-1] == a[j] + a[j-1] + ... + a[a.length - 1]) 就可以將陣列三等分。

示例 1:

輸出:[0,2,1,-6,6,-7,9,1,2,0,1]

輸出:true

解釋:0 + 2 + 1 = -6 + 6 - 7 + 9 + 1 = 2 + 0 + 1

示例 2:

輸入:[0,2,1,-6,6,7,9,-1,2,0,1]

輸出:false

示例 3:

輸入:[3,3,6,5,-2,2,5,1,-9,4]

輸出:true

解釋:3 + 3 = 6 = 5 - 2 + 2 + 5 + 1 - 9 + 4

3 <= a.length <= 50000

-10^4 <= a[i] <= 10^4

解題思路

首選算a的累加和能否被3整除,不可以那分不了3等分。

雙指標前後向中間逼近,不用考慮中間那段怎麼分,只要左右兩段累加和等於3等分的數值,中間剩的那段也就找到了。

當然要考慮一種情況【1,-1,1,-1】,這種情況下是分成了兩段,要考慮到

**如下

class

solution

if (sum%3!=0)

boolean flag=false

;

int eachsum=sum/3;

int i=0,j=a.length-1;

int lans=a[0],rans=a[a.length-1];

while (iif (rans!=eachsum)

if (lans==eachsum&&rans==eachsum)

}return flag&&j-i>1;

}}

LeetCode22 括號生成

題幹 給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 演算法思想 先看括號匹配,既然要達到括號匹配,就一定要滿足stack的操作 不多說 則組合數的結果則是卡特蘭數。要輸出正確組合數,可採用遞迴,用兩個變數l,r分別表示剩餘左...

leetcode 22 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 要把這個當成下棋,左括號為黑,右括號為白,則轉換為 3黑3白有幾種排列方式 每一步都有兩個選擇 下黑或者下白,但是場上下白子時剩下的黑子必須比剩下的白子多 比n 2時,有黑白黑白...

leetcode 22 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 參考官方題解 方法二 回溯法 只有在序列仍然保持有效才會新增 如果還有位置,我們可以開始放乙個左括號。如果不超過右括號數量不超過左括號的數量可以放乙個右括號。class solu...