Easy
Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
A subarray is a contiguous part of an array.
Example 1:
Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
Example 2:
Input: nums = [1]
Output: 1
Example 3:
Input: nums = [5,4,-1,7,8]
Output: 23
Constraints:
1 <= nums.length <= 105-104 <= nums[i] <= 104Follow up: If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
To solve the “Maximum Subarray” problem in Swift with the Solution class, follow these steps:
maxSubArray in the Solution class that takes an integer array nums as input and returns an integer representing the largest sum of a contiguous subarray.maxSum and currentSum to store the maximum sum found so far and the sum of the current subarray being considered, respectively. Set both to the value of the first element in nums.nums from index 1 to nums.length - 1:
currentSum as the maximum of the current element and the sum of the current element plus currentSum.maxSum as the maximum of maxSum and currentSum.nums, return maxSum.Here’s the implementation of the maxSubArray method in Swift:
public class Solution {
public func maxSubArray(_ nums: [Int]) -> Int {
var maxi = Int.min
var sum = 0
for num in nums {
sum += num
maxi = max(sum, maxi)
if sum < 0 {
sum = 0
}
}
return maxi
}
}
This implementation efficiently finds the largest sum of a contiguous subarray in the given array nums using the Kadane’s algorithm, which has a time complexity of O(n).