這篇文章主要介紹LeetCode如何解決數(shù)組中心索引問(wèn)題,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比銅官網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式銅官網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋銅官地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
題目描述:
給定一個(gè)整數(shù)類型的數(shù)組 nums
,請(qǐng)編寫(xiě)一個(gè)能夠返回?cái)?shù)組 “中心索引” 的方法。
中心索引 :數(shù)組中心索引的左側(cè)所有元素相加的和等于右側(cè)所有元素相加的和。
如果數(shù)組不存在中心索引,那么我們應(yīng)該返回 -1。如果數(shù)組有多個(gè)中心索引,那么我們應(yīng)該返回最靠近左邊的那一個(gè)
示例:
輸入:nums = [1, 7, 3, 6, 5, 6]輸出:3解釋:索引 3 (nums[3] = 6) 的左側(cè)數(shù)之和 (1 + 7 + 3 = 11),與右側(cè)數(shù)之和 (5 + 6 = 11) 相等。同時(shí), 3 也是第一個(gè)符合要求的中心索引
輸入:nums = [1, 2, 3]輸出:-1解釋:數(shù)組中不存在滿足此條件的中心索引
說(shuō)明:
nums
的長(zhǎng)度范圍為 [0, 10000]
任何一個(gè) nums[i]
將會(huì)是一個(gè)范圍在 [-1000, 1000]
的整數(shù)
第一次嘗試
想法:利用一個(gè)index標(biāo)號(hào)從數(shù)組頭開(kāi)始移動(dòng),設(shè)置left_nums和right_nums兩個(gè)參數(shù)計(jì)算左邊和右邊和
注意:
left_nums和right_nums要在循環(huán)中,因?yàn)槊恳淮我刂?/strong>
數(shù)組可能存在負(fù)數(shù),所以也可能存在第一個(gè)元素或最后一個(gè)元素是中心索引
運(yùn)行結(jié)果:
由于循環(huán)太多,導(dǎo)致時(shí)間效率較低
本文由“壹伴編輯器”提供技術(shù)支持
第一次優(yōu)化
減少循環(huán):靈活利用數(shù)組切片
內(nèi)存參數(shù)減少了,空間消耗減小,但是時(shí)間效率依然較低
本文由“壹伴編輯器”提供技術(shù)支持
最終優(yōu)化方法
思路:若index是中心索引,則左邊和=右邊和,這樣的話可以引入公式:
S(數(shù)組總和)= left_nums(左邊和)*2 + nums[index]
故只需要?jiǎng)討B(tài)計(jì)算左邊和left_nums即可(又減少了一個(gè)參數(shù))
動(dòng)態(tài)計(jì)算:先判斷是否是中心索引,再移動(dòng)index,并計(jì)算左邊和left_nums即可
特殊現(xiàn)象:左邊和left_nums和索引標(biāo)號(hào)的移動(dòng)是同步的,當(dāng)索引標(biāo)號(hào)右移動(dòng)一位時(shí),left_nums也就加上上一個(gè)索引對(duì)應(yīng)的值
以上是“LeetCode如何解決數(shù)組中心索引問(wèn)題”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!