当前位置: 面试刷题>> 连续数组 (经典算法题500道)


### 题目描述补充 **题目:连续数组** 给定一个未排序的整数数组 `nums`,找出数组中的一个连续子数组(至少包含两个元素),使得子数组的和最大,并返回该子数组的和。 注意: - 数组中的元素可能包含负数。 - 返回的是子数组的和,而不是子数组本身。 ### 示例 **输入**:`nums = [-2,1,-3,4,-1,2,1,-5,4]` **输出**:`6` **解释**:连续子数组 `[4,-1,2,1]` 的和最大,为 `6`。 ### PHP 示例代码 ```php function maxSubArray($nums) { $maxSum = $nums[0]; $currentSum = $nums[0]; for ($i = 1; $i < count($nums); $i++) { // 如果当前元素加上之前的和比当前元素小,则重新开始计算当前和 $currentSum = max($nums[$i], $currentSum + $nums[$i]); // 更新最大和 $maxSum = max($maxSum, $currentSum); } return $maxSum; } // 测试 $nums = [-2,1,-3,4,-1,2,1,-5,4]; echo maxSubArray($nums); // 输出 6 ``` ### Python 示例代码 ```python def maxSubArray(nums): max_sum = nums[0] current_sum = nums[0] for num in nums[1:]: current_sum = max(num, current_sum + num) max_sum = max(max_sum, current_sum) return max_sum # 测试 nums = [-2,1,-3,4,-1,2,1,-5,4] print(maxSubArray(nums)) # 输出 6 ``` ### JavaScript 示例代码 ```javascript function maxSubArray(nums) { let maxSum = nums[0]; let currentSum = nums[0]; for (let i = 1; i < nums.length; i++) { // 如果当前元素加上之前的和比当前元素小,则重新开始计算当前和 currentSum = Math.max(nums[i], currentSum + nums[i]); // 更新最大和 maxSum = Math.max(maxSum, currentSum); } return maxSum; } // 测试 const nums = [-2,1,-3,4,-1,2,1,-5,4]; console.log(maxSubArray(nums)); // 输出 6 ``` **码小课网站中有更多相关内容分享给大家学习**,包括但不限于算法题解、数据结构、编程技巧等,欢迎访问码小课网站深入学习。
推荐面试题