LeetCode053 Maximum Subarray

来源:互联网 发布:淘宝拍卖烂尾楼 编辑:程序博客网 时间:2024/06/05 13:22

详细见:leetcode.com/problems/maximum-subarray


Java Solution: github

package leetcode;public class P053_MaximumSubarray {public static void main(String[] args) {System.out.println(new Solution1().maxSubArray(new int[] {-2,1,-3,4,-1,2,1,-5,4}));}/* * 2 ms * 17.12% */static class Solution1 {int ans = 0;    public int maxSubArray(int[] nums) {        if (nums == null || nums.length == 0)        return ans;        int[] help = new int[nums.length];        ans = help[0] = nums[0];        for (int i = 1; i != nums.length; i ++) {        help[i] = help[i - 1] > 0 ? help[i - 1] + nums[i] : nums[i];        ans = Math.max(help[i], ans);        }        return ans;    }}/* * 2 ms * 17.12% */static class Solution2 {int ans = 0, pre = 0;    public int maxSubArray(int[] nums) {    if (nums == null || nums.length == 0)        return ans;    ans = pre = nums[0];        for (int i = 1; i != nums.length; i ++) {        pre = pre > 0 ? pre + nums[i] : nums[i];        ans = Math.max(pre, ans);        }    return ans;    }}}


C Solution: github

/*    url: leetcode.com/problems/maximum-subarray/    AC 6ms 44.59%*/int maxSubArray(int* n, int nn) {    int ans = 0, ni = 0, sum = 0;    if (nn < 1) return 0;    ans = n[0];    for (ni = 0; ni < nn; ni ++) {        if (sum < 0) sum = 0;        sum += n[ni];        ans = ans < sum ? sum : ans;    }    return ans;}int main() {    int n[] = {-2,1,-3,4,-1,2,1,-5,4};    int nn = 9;    printf("answer is %d\r\n", maxSubArray(n, nn));}


Python Solution: github

#coding=utf-8'''    url: leetcode.com/problems/maximum-subarray    @author:     zxwtry    @email:      zxwtry@qq.com    @date:       2017年4月10日    @details:    Solution: 59ms 53.69%'''class Solution(object):    def maxSubArray(self, n):        """        :type n: List[int]        :rtype: int        """        nn = 0 if n == None else len(n)        if nn == 0: return 0        a, sum = n[0], n[0]        for i in range(1, nn):            if sum < 0: sum = 0            sum += n[i]            a = max(a, sum)        return a        


0 0
原创粉丝点击