当前位置: 面试刷题>> 查找子数组 (经典算法题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
```
### 码小课分享
码小课网站中有更多关于算法和数据结构的精彩内容,包括各种经典问题的详细解析和实战练习,适合初学者到进阶者深入学习。通过不断练习和理解这些算法,你可以提升自己的编程能力和解决问题的能力。