美文网首页
分治算法w2-T16-面试题 16.17. 连续数列-简单

分治算法w2-T16-面试题 16.17. 连续数列-简单

作者: 小院闲窗春已深 | 来源:发表于2020-05-08 20:15 被阅读0次

题目

给定一个整数数组,找出总和最大的连续数列,并返回总和。

示例:

输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
进阶:

如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contiguous-sequence-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法1:

class Solution {
   public int maxSubArray(int[] nums) {
            return num(nums,0, nums.length-1);
        }
        public int num(int[] nums, int start, int end){
            if(start==end){
                return nums[start];
            }
            int mid= (start+end)/2;
            int leftmax=num(nums,start,mid);
            int rightmax=num(nums,mid+1,end);
            return max(nums, leftmax,rightmax,start,mid,end);
        }
        public int max(int[] nums, int leftmax, int rightmax,int start, int mid, int end){
            int curleftmax=Integer.MIN_VALUE;
            int currightmax=Integer.MIN_VALUE;
            int sum=0;
            for(int i = mid;i>=start;i--){
               sum += nums[i];
                if(sum>curleftmax){
                    curleftmax=sum;
                }

            }
            sum=0;
            for(int i = mid+1; i<=end; i ++){
               sum += nums[i];
                if(sum>currightmax){
                    currightmax=sum;
                }
            }
            return Math.max(Math.max(leftmax,rightmax),(curleftmax+currightmax));
        }
}

相关文章

  • 分治算法w2-T16-面试题 16.17. 连续数列-简单

    题目 给定一个整数数组,找出总和最大的连续数列,并返回总和。示例:输入: [-2,1,-3,4,-1,2,1,-5...

  • 斐波那契数列

    序言 在网易公开课《麻省理工-算法导论》的视频课程中,分治算法讲解了斐波那契数列。对于斐波那契数列,简单来看,不就...

  • 分治算法

    文章结构 如何理解分治算法 分治算法应用举例 1. 如何理解分治算法 1.1 分治算法的核心思想 分治算法的核心思...

  • Java基于分治算法实现的棋盘覆盖问题示例

    Java基于分治算法实现的棋盘覆盖问题示例 本文主要介绍了ava基于分治算法实现的棋盘覆盖问题,简单描述了棋盘覆盖...

  • 算法设计与分析总结

    2016 summer & 1、递归与分治法 递归的基本思想:一个直接或间接调用自身的算法 (1)斐波那契数列: ...

  • sort快排的实现

    快速排序的基本实现 快速排序算法是一种基于交换的高效的排序算法,它采用了分治法的思想:1、从数列中取出一个数作为基...

  • 算法导论第2.3章 - 分治算法

    分治算法 递归:算法一次或多次递归地调用其自身已解决紧密相关的若干子问题。这些算法遵循分治法的思想。 分治算法三个...

  • 数据结构与算法(四,分治法和快排)

    分治法 思想:分治法的前提条件是数列已经是有序的,当在有序数列中查找一个数的位置时,首先取数列中间位置的值,与要查...

  • 从分治算法到 MapReduce

    从分治算法说起 要说 MapReduce 就不得不说分治算法,而分治算法其实说白了,就是四个字 分而治之 。其实就...

  • Leetcode-Java(二十五)

    241. Different Ways to Add Parentheses 采用分治算法,分治算法的基本思想是将...

网友评论

      本文标题:分治算法w2-T16-面试题 16.17. 连续数列-简单

      本文链接:https://www.haomeiwen.com/subject/rdyqnhtx.html