做室內(nèi)裝修的網(wǎng)站seo排名優(yōu)化培訓(xùn)價(jià)格
題目:給你一個(gè)整數(shù)數(shù)組?nums?,請(qǐng)計(jì)算數(shù)組的?中心下標(biāo)?。
數(shù)組?中心下標(biāo)?是數(shù)組的一個(gè)下標(biāo),其左側(cè)所有元素相加的和等于右側(cè)所有元素相加的和。
如果中心下標(biāo)位于數(shù)組最左端,那么左側(cè)數(shù)之和視為?0?,因?yàn)樵谙聵?biāo)的左側(cè)不存在元素。這一點(diǎn)對(duì)于中心下標(biāo)位于數(shù)組最右端同樣適用。
如果數(shù)組有多個(gè)中心下標(biāo),應(yīng)該返回?最靠近左邊?的那一個(gè)。如果數(shù)組不存在中心下標(biāo),返回?-1?。?
解題思路:記數(shù)組的全部元素之和為total,當(dāng)遍歷到第 i 個(gè)元素時(shí),設(shè)其左側(cè)元素之和為sum,則其右側(cè)元素之和為total-numsi-sum.左右側(cè)元素相等即為 sum=total?numsi?sum,即2*sum+numsi=total。
當(dāng)中心索引左側(cè)或右側(cè)沒有元素時(shí),即為零個(gè)項(xiàng)相加。
class Solution{public int pivotIndex(int[] nums){int total=Arrays.stream(nums).sum();int sum=0;for(int i=0;i<nums.length;++i){if(2*sum+nums[i]==total){return i; } sum+=nums[i]; }return -1; }
}