1. 程式人生 > 其它 >力扣每日刷題(1)

力扣每日刷題(1)

尋找陣列的中心索引
給你一個整數陣列nums ,請計算陣列的 中心下標 。

陣列 中心下標 是陣列的一個下標,其左側所有元素相加的和等於右側所有元素相加的和。

如果中心下標位於陣列最左端,那麼左側數之和視為 0 ,因為在下標的左側不存在元素。這一點對於中心下標位於陣列最右端同樣適用。

如果陣列有多箇中心下標,應該返回 最靠近左邊 的那一個。如果陣列不存在中心下標,返回 -1 。

示例 1:

輸入:nums = [1, 7, 3, 6, 5, 6]
輸出:3
解釋:
中心下標是 3 。
左側數之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,
右側數之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。
示例 2:

輸入:nums = [1, 2, 3]
輸出:-1
解釋:
陣列中不存在滿足此條件的中心下標。
示例 3:

輸入:nums = [2, 1, -1]
輸出:0
解釋:
中心下標是 0 。
左側數之和 sum = 0 ,(下標 0 左側不存在元素),
右側數之和 sum = nums[1] + nums[2] = 1 + -1 = 0 。

提示:

1 <= nums.length <= 104
-1000 <= nums[i] <= 1000

先說下程式碼的思路:
建立三個變數,分別是代表 總值,左邊的和值,臨時值
先將總值得出
再將總值減去第一個值判斷是否為0(如果是0則代表左右兩邊無值,只有一個數)
然後進行一個迴圈
將臨時值加入陣列的值
臨時值再在陣列下標大於0的時候減去陣列值,此時得到的值是左邊的和
然後進行一個while迴圈,如果左邊的和等於總值減去臨時值(這個值得出來等於右邊的值)就返回值出去
class Solution {
    public int pivotIndex(int[] nums) {
        int left_num = 0;
        int sum = 0;
        int temp = 0;
        for(int i = 0; i < nums.length; i++){
            sum += nums[i];
        }
        if(sum - nums[0] == 0){
            return 0;
        }
        for(int i = 0; i < nums.length; i++){
            temp 
+= nums[i]; if(i != 0){ left_num = temp - nums[i]; } while(left_num == sum - temp){ return i; } } return -1; } }