Java--最大子序列和实现
- package com.dongbin.test;
- /**
- * 最大子序列和 --分治法
- *
- * @author dongbin
- *
- */
- public class MaxSubListSum {
- /**
- * 最大子序列的实现方法
- *
- * @param arr
- * --数组
- * @param left
- * @param right
- * @return
- */
- public static int maxsubListSum(int arr[], int left, int right) {
- if (left == right) {// arr.length==1
- if (arr[left] > 0) {
- return arr[left];
- } else {
- return 0;
- }
- }
- // 划分数组
- int center = (left + right) / 2;
- int maxLeftSum = maxsubListSum(arr, left, center);// 左边最大值
- int maxRightSum = maxsubListSum(arr, center + 1, right);// 右边最大值
- // 左边求和
- int maxLeftBorderSum = 0, leftBorderSum = 0;
- for (int i = center; i >= left; i--) {
- leftBorderSum += arr[i];
- if (leftBorderSum > maxLeftBorderSum) {
- maxLeftBorderSum = leftBorderSum;
- }
- }
- // 右边求和
- int maxRightBorderSum = 0, rightBorderSum = 0;
- for(int i = center+1;i<=right;i++){
- rightBorderSum += arr[i];
- if(rightBorderSum>maxRightBorderSum){
- maxRightBorderSum = rightBorderSum;
- }
- }
- return maxList(maxLeftSum,maxRightSum,maxLeftBorderSum+maxRightBorderSum);
- }
- /**
- * 获取 多个Id 的最大值
- * @param elements
- * @return
- */
- private static int maxList(int... elements){
- int max = 0;
- for(int i = 0;i<elements.length;i++){
- if(elements[i]>max){
- max = elements[i];
- }
- }
- return max;
- }
- public static void main(String[] args) {
- int[] a = {4,-3,5,-2,-1,2,6,-2};
- System.out.println(maxsubListSum(a, 0, a.length-1));
- }
- }
- /**
- * 优化最大子序列
- * @param arr
- * @return
- */
- public static int optMaxSubListSum(int [] arr){
- int maxSum = 0,temp = 0;
- for(int i=0;i<arr.length;i++){
- temp += arr[i];
- if(temp>maxSum){
- maxSum = temp;
- }
- if(temp<0){
- temp = 0;
- }
- }
- return maxSum;
- }
Java--最大子序列和实现的更多相关文章
- java.——最大子序列和(前提是:全部都是非负数)
直接上代码吧: 情况一:全部是非负数整数的时候,其实非负实数处理也一样. package Person; import java.util.Scanner; public class Main{ ...
- Java实现子序列问题
一个串的子串是指该串的一个连续的局部.如果不要求连续,则可称为它的子序列. 比如对串: "abcdefg" 而言,"ab","abd",&q ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 算法入门:最大子序列和的四种算法(Java)
最近再学习算法和数据结构,推荐一本书:Data structures and Algorithm analysis in Java 3rd 以下的四种算法出自本书 四种最大子序列和的算法: 问题描述 ...
- 动态规划算法——最长公共子序列问题(java实现)
已知序列X=(A,B,C,A,B,D,A)和序列Y=(B,A,D,B,A),求它们的最长公共子序列S. /* * LCSLength.java * Version 1.0.0 * Created on ...
- “最大子序列和”算法 java
maxSubSum各自是最大子序列和的4中java算法实现. 第一种算法执行时间为O(N^3),另外一种算法执行时间为O(N^2),第三种算法执行时间为O(nlogn),第四种算法执行时间为线性N p ...
- 最长递增子序列 LIS 时间复杂度O(nlogn)的Java实现
关于最长递增子序列时间复杂度O(n^2)的实现方法在博客http://blog.csdn.net/iniegang/article/details/47379873(最长递增子序列 Java实现)中已 ...
- LeetCode 300. Longest Increasing Subsequence最长上升子序列 (C++/Java)
题目: Given an unsorted array of integers, find the length of longest increasing subsequence. Example: ...
- LeetCode 5214. 最长定差子序列(Java)HashMap
题目: 5214. 最长定差子序列 给你一个整数数组 arr 和一个整数 difference,请你找出 arr 中所有相邻元素之间的差等于给定 difference 的等差子序列,并返回其中最长的等 ...
- Java实现 蓝桥杯VIP 算法提高 最长公共子序列
算法提高 最长公共子序列 时间限制:1.0s 内存限制:256.0MB 问题描述 给定两个字符串,寻找这两个字串之间的最长公共子序列. 输入格式 输入两行,分别包含一个字符串,仅含有小写字母. 输出格 ...
随机推荐
- go: GOPATH entry is relative; must be absolute path: "".
安装:vscode-go出现以下提示: go: GOPATH entry is relative; must be absolute path: "".Run 'go help g ...
- tensorflow与kubernetes/docker结合使用实践
tensorflow tensorflow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流 ...
- .NET中的类库
1.object类 所有类都继承于object类,是顶级父类,他有以下成员,都是虚方法: a) ToString() 默认输出对象所属类的全名称(命名空间.类名) b) Equals (O ...
- TCP报文中的SYN,FIN,ACK,PSH,RST,URG
TCP的三次握手是怎么进行的:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发 ...
- HTML5之Audio音频标签学习
HTML5中的新元素标签 src:音频文件路径. autobuffer:设置是否在页面加载时自动缓冲音频. autoplay:设置音频是否自动播放. loop:设置音频是否要循环播放. control ...
- web页面在微信里打开,字体颜色不正常显示
问题:写的web项目在微信里的webview里打开(iphone手机),会出现颜色的不识别.写的是白色,数字的部分会过了3-5秒后,变成黑色! 原因:在iphone手机里,数字的部分(具体的长度没有测 ...
- VirtualBox 主机与虚拟机互通
文章转载:http://www.cnblogs.com/HD/p/4011323.html 网络要设置才能互通 注意:不启动Linux系统的时候,设置网络 使用VirtualBox的主机与虚拟机相互通 ...
- 觉得VR头显太笨重?轻便的VR“神器”来了
一直以来需要搭配手机才能使用的VRBOX(VR眼镜盒子)都被大家诟病携带不便.比较笨重.不透气等等问题.大家也一直期待能够有轻便的搭配手机的VR设备出现,最好是可以随身携带的.另外一方面,作为手机最常 ...
- JS代码:设为首页 加入收藏
// JavaScript Document // 加入收藏 <a onclick="AddFavorite(window.location,document.title)" ...
- C# EnumHelper
using System; using System.Collections.Generic; using System.ComponentModel; using System.Reflection ...