Featured image of post Find Pivot Index

Find Pivot Index

724. 寻找数组的中心下标

分析

  1. 总和计算:
    • 首先计算整个数组的总和 sum
  2. 逐个检查下标:
    • 遍历数组,维护一个变量 s,记录当前位置左侧所有元素的和
    • 判断当前下标是否满足条件:左侧和 s 是否等于右侧和 sum - s - nums[i]
    • 如果条件满足,返回当前下标 i
    • 否则,更新左侧和 ss + nums[i]
  3. 无解处理:
    • 如果遍历结束仍未找到符合条件的下标,返回 -1

时间复杂度

时间复杂度 O(n)

空间复杂度

空间复杂度为 O(1)

C++代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution
{
public:
    int pivotIndex(vector<int>& nums)
    {
        int sum = 0;
        for (int num : nums) // 计算数组总和
            sum += num;

        int s = 0; // 左侧和初始化为 0
        for (int i = 0; i < nums.size(); ++i)
        {
            // 判断当前下标是否满足条件
            if (s == sum - s - nums[i])
                return i;
            // 更新左侧和
            s += nums[i];
        }
        return -1; // 未找到中心下标
    }
};
Built with Hugo
Theme Stack designed by Jimmy