將陣列分為和相等的三個部分
阿新 • • 發佈:2022-05-18
一、題目
給你一個整數陣列 arr,只有可以將其劃分為三個和相等的 非空 部分時才返回 true,否則返回 false。
形式上,如果可以找出索引 i + 1 < j 且滿足 (arr[0] + arr[1] + ... + arr[i] == arr[i + 1] + arr[i + 2] + ... + arr[j - 1] == arr[j] + arr[j + 1] + ... + arr[arr.length - 1])
就可以將陣列三等分。
二、思路
1.首先計算陣列累加和,並求三分之一值
2.遍歷陣列,直到累加和三分之一值,統計組數
3.判斷是否三組
三、程式實現
/** * @param {number[]} arr * @return {boolean} */ var canThreePartsEqualSum = function(arr) { //首先計算陣列累加和 let sum=arr.reduce((a,b)=>(a+b)); //計算三分之一 let three_sum=sum/3; let temp=0; let count=3; //遍歷陣列,計算累加和 for(let i=0;i<arr.length;i++){ temp=temp+arr[i]; if(temp===three_sum){ temp=0; count--; } } //判斷是否三組,如果小於0是三組以上,返回false //等於0剛好三組,返回true return count<=0; };