博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA代码—算法基础:最大连续子数组乘积问题
阅读量:4041 次
发布时间:2019-05-24

本文共 1215 字,大约阅读时间需要 4 分钟。

最大连续子数组乘积问题

问题描述

在一个整型数组中寻找连续的元素(至少包含1个元素)构成子数组使得其元素乘积最大。

例如:给定数组 {2,3,-2,4};
最大连续元素构成的子数组为 {2,3},最大乘积为 6。

问题分析

注意:数组元素可能为 负数、0、整数。 其次,元素要连续。

算法设计

package com.bean.algorithmbasic;public class MaximumProductSubarray {    /*     * 最大连续子数组乘积     *      * 给定一个整形数组,求最大子数组的乘积。     *      * 问题分析:     * 数组元素可能包含正数、负数和0.     * 另外,根据题目要求,子数组要连续。     *      * */    public static int maxProduct(int[] A) {        //如果数组为null或者数组长度为0,直接返回0.        if (A == null || A.length == 0) {            return 0;        }        //开始将A[0]分别设置为:最大值、最小值,和最终的返回结果。        int max = A[0], min = A[0], result = A[0];        //从数组的第二个元素开始取值        for (int i = 1; i < A.length; i++) {            int temp = max;            //状态转换方程的定义和实现            max = Math.max(Math.max(max * A[i], min * A[i]), A[i]);            min = Math.min(Math.min(temp * A[i], min * A[i]), A[i]);            //始终用result存放最大值,以返回结果。            if (max > result) {                result = max;            }        }        return result;    }    public static void main(String[] args) {        // TODO Auto-generated method stub        int[] arraydemo= {
2,3,-2,4}; int RESULT=maxProduct(arraydemo); System.out.println("RESULT IS: "+RESULT); }}

(完)

转载地址:http://qgvdi.baihongyu.com/

你可能感兴趣的文章
Selenium-WebDriverApi接口详解
查看>>
Selenium-ActionChains Api接口详解
查看>>
Selenium-Switch与SelectApi接口详解
查看>>
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
测试必会之 Linux 三剑客之 sed
查看>>
Socket请求XML客户端程序
查看>>
Java中数字转大写货币(支持到千亿)
查看>>
Java.nio
查看>>
函数模版类模版和偏特化泛化的总结
查看>>
VMware Workstation Pro虚拟机不可用解决方法
查看>>
最简单的使用redis自带程序实现c程序远程访问redis服务
查看>>
redis学习总结-- 内部数据 字符串 链表 字典 跳跃表
查看>>
iOS 对象序列化与反序列化
查看>>
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>