We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
练习DFS写法,没用DP 思路没问题,代码有BUG
class Solution(object): def maxSubArray(self, nums): left, right = 0, len(nums) - 1 return self.dfsHelper(self, nums, left, right) # bug 1: self?????? def dfsHelper(self, nums, left, right): # Base if left == right: return nums[left] #or right doesn't matter mid = (l + r) // 2 # bug 2: l + r???????? left + right.... # Request leftSum = self.dfsHelper(nums, left, mid) rightSum = self.dfsHelper(nums, mid + 1, right) midSum = self.getMidSum(nums, left, mid , right) if leftSum >= rightSum and leftSum >= midSum: return leftSum if rightSum >= leftSum and rightSum >= midSum: return rightSum return midSum def getMidSum(self, nums, left, mid, right): leftSum, rightSum = -float('inf'), -float('inf') # Code tempSum = 0 for i in range(mid + 1, left, -1): # bug 3: should be the other way around tempSum += nums[i] leftSum = max(leftSum, tempSum) tempSum = 0 for j in range(mid + 1, right + 1): tempSum += nums[j] rightSum = max(rightSum, tempSum) return leftSum + rightSum
class Solution(object): def maxSubArray(self, nums): left, right = 0, len(nums) - 1 return self.dfsHelper(nums, left, right) def dfsHelper(self, nums, left, right): # Base if left == right: return nums[left] #or right doesn't matter mid = (left + right) // 2 # Request leftSum = self.dfsHelper(nums, left, mid) rightSum = self.dfsHelper(nums, mid + 1, right) midSum = self.getMidSum(nums, left, mid , right) if leftSum >= rightSum and leftSum >= midSum: return leftSum if rightSum >= leftSum and rightSum >= midSum: return rightSum return midSum def getMidSum(self, nums, left, mid, right): leftSum, rightSum = -float('inf'), -float('inf') # Code tempSum = 0 for i in range(mid, left - 1, -1): tempSum += nums[i] leftSum = max(leftSum, tempSum) tempSum = 0 for j in range(mid + 1, right + 1): tempSum += nums[j] rightSum = max(rightSum, tempSum) return leftSum + rightSum
The text was updated successfully, but these errors were encountered:
No branches or pull requests
第一刷
练习DFS写法,没用DP
思路没问题,代码有BUG
错误代码
正确代码
The text was updated successfully, but these errors were encountered: