当前位置: 面试刷题>> 中心索引 (经典算法题500道)


### 完整题目描述 **中心索引**:给定一个整数数组,找到一个索引,使得该索引左侧所有元素之和等于该索引右侧所有元素之和。如果这样的索引存在,则返回它;否则,返回 -1。注意,索引是从0开始的。 ### 示例 给定数组:`nums = [1, 7, 3, 6, 5, 6]` - 索引0的左侧和为0(因为索引0左侧没有元素),右侧和为`7+3+6+5+6 = 27`。 - 索引1的左侧和为1,右侧和为`3+6+5+6 = 20`。 - 索引2的左侧和为`1+7 = 8`,右侧和为`6+5+6 = 17`。 - 索引3的左侧和为`1+7+3 = 11`,右侧和为`5+6 = 11`,此时左侧和等于右侧和。 - 索引4和5的右侧和都将小于左侧和(不再详述)。 因此,返回索引3,因为它满足条件。 ### PHP 代码示例 ```php function findCenterIndex($nums) { $totalSum = array_sum($nums); $leftSum = 0; for ($i = 0; $i < count($nums); $i++) { $rightSum = $totalSum - $leftSum - $nums[$i]; if ($leftSum == $rightSum) { return $i; } $leftSum += $nums[$i]; } return -1; } // 示例 $nums = [1, 7, 3, 6, 5, 6]; echo findCenterIndex($nums); // 输出: 3 ``` ### Python 代码示例 ```python def findCenterIndex(nums): total_sum = sum(nums) left_sum = 0 for i in range(len(nums)): right_sum = total_sum - left_sum - nums[i] if left_sum == right_sum: return i left_sum += nums[i] return -1 # 示例 nums = [1, 7, 3, 6, 5, 6] print(findCenterIndex(nums)) # 输出: 3 ``` ### JavaScript 代码示例 ```javascript function findCenterIndex(nums) { let totalSum = nums.reduce((a, b) => a + b, 0); let leftSum = 0; for (let i = 0; i < nums.length; i++) { let rightSum = totalSum - leftSum - nums[i]; if (leftSum === rightSum) { return i; } leftSum += nums[i]; } return -1; } // 示例 const nums = [1, 7, 3, 6, 5, 6]; console.log(findCenterIndex(nums)); // 输出: 3 ``` **码小课网站中有更多相关内容分享给大家学习**,涵盖各种算法和数据结构,帮助你更好地准备面试和提升自己的编程技能。
推荐面试题