微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

最大子数组问题蛮力复杂度

如何解决最大子数组问题蛮力复杂度

| 使用蛮力的最大子数组问题的运行时/内存复杂度是多少? 他们可以进一步优化吗?特别是内存复杂度? 谢谢,     

解决方法

蛮力是欧米茄(n ^ 2)。使用分而治之,您可以实现Theta(n lg n)复杂度。有关更多细节,请参见《算法简介》等许多书籍,或本次讲座等Web上的各种资源。     ,如该答案中所建议,您可以使用具有O(n)复杂度的Kadane算法。 Java实现:
public int[] kadanesAlgorithm (int[] array) {
        int start_old = 0;
        int start = 0;
        int end = 0;
        int found_max = 0;

        int max = array[0];

        for(int i = 0; i<array.length; i++) {
            max = Math.max(array[i],max + array[i]);
            found_max = Math.max(found_max,max);
            if(max < 0)
                start = i+1;
            else if(max == found_max) {
                start_old=start;
                end = i;
                }
        }

        return Arrays.copyOfRange(array,start_old,end+1);
    }
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。