「最大子数组java」最大子数组线性算法

博主:adminadmin 2022-11-30 13:09:07 44

今天给各位分享最大子数组java的知识,其中也会对最大子数组线性算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java 求二维数组的最大值!!

import java.util.Arrays;

public class Test {

public static void main(String[] args) {

//初始化一个测试的二维数组

int[][] a = new int[][] { { 34,234,543,2,42,224 }, { 234,56,88,241,564,234,555,24 }, { 13,444,534,76,9999,894,34 } };

System.out.println("max value is:" + getMaxValue1(a));

System.out.println("max value is:" + getMaxValue2(a));

}

/**

* 方法1:遍历二维数组的所有的元素与当前最大的值比较,并记录

*/

static int getMaxValue1(int[][] a){

int maxValue = 0;//用于记录当然最大值

if(a!=null a.length!=0)

for (int[] a1 : a) {

for (int i : a1) {

if(maxValuei)maxValue = i;

}

}

return maxValue;

}

/**

* 方法2:对子数组进行排序,然后比较子数组中最大的值。当然这里只求最大值也没必要排序-_-!!,只是体现了一种思想

*/

static int getMaxValue2(int[][] a){

int maxValue = 0;

if(a!=null a.length!=0)

for (int[] a1 : a) {

Arrays.sort(a1);//对a1进行排序,升序的

if(maxValuea1[a1.length-1])maxValue = a1[a1.length-1];//比较子数组中最大的值

}

return maxValue;

}

}

java 中数组的长度最大可以多长啊?

java数组最多只能是255维的,每一维的长度,主要看你用的JDK版本,一般来说可以只声明维度,例如int a[][],int b[]。在对Java数组赋值后,可以通过*.lenght()来查看该数组的长度。

最小子数组和与最大子数组和

python 使用切片 动态规划 O(n * logn)

def min_sub_array(data):

min = max = sum(data)

min_list = max_list = data

for i in range(len(data)):

for j in range(i+1,len(data)+1):

sub_list = data[i:j]

sum_sub_array = sum(sub_list)

if sum_sub_array = min:

min = sum_sub_array

min_list = sub_list

elif sum_sub_array max:

max = sum_sub_array

max_list = sub_list

return min,min_list,max,max_list

def min_sub_array1(data):

min = sum(data)

cur_sum = 0

n = len(data)

for i in range(n):

cur_sum = cur_sum + data[i]

if cur_summin:

min = cur_sum

if cur_sum 0:

cur_sum = 0

return min

def max_sub_array1(data):

max = sum(data)

cur_sum = 0

n = len(data)

for i in range(n):

cur_sum = cur_sum + data[i]

if cur_summax:

max = cur_sum

if cur_sum 0:

cur_sum = 0

return max

Java 算法复杂度O(n)

public static int minSub(int[] data){

int min = sumArray(data);

int n = data.length;

int cursum = 0;

for(int i = 0;in;i++){

cursum = cursum + data[i];

if(cursummin){

min = cursum;

}

if(cursum 0){

cursum = 0;

}

}

return min;

}

public static int maxSub(int[] data){

int max = sumArray(data);

int n = data.length;

int cursum = 0;

for(int i = 0;in;i++){

cursum = cursum + data[i];

if(cursummax){

max = cursum;

}

if(cursum 0){

cursum = 0;

}

}

return max;

}

public static int sumArray(int[] data){

int sum = 0;

for(int i = 0;idata.length;i++){

sum = sum + data[i];

}

return sum;

}

java求最大公共子串

二楼改的

c = b.substring(i,j-1);

之后下标越界没了。

程序无法出结果,中间有死循环。当while语句执行完之后j是a.length();然后是执行内循环for语句for(j=b.length()-1;j0;j--) 此时只比较J0;。。。。好像是个死循环。最内层的循环可以在加一个int k来控制。多次运行导致cpu上升至100%的。

提供一种矩阵算法,这是LCS的一种算法:

public class stringCompare {

/**求最长匹配子字符串算法

str数组记录每行生成的最大值strmax

max数组记录str数组最大时所处的列号nummaxj

最大子字符串为substring(nummax-strmax+1,strmax+1)

*/

public static void main(String[] args) {

String s1="asdfgxxcvasdfgc";

String s2="asdfxxcv";

int m=s1.length();

int n=s2.length();

int k=0;

int nummax=0;

int []str=new int[m];

int []max=new int[m];

int []num=new int[m];

for(int i=0;im;i++) //生成矩阵数组

for(int j=n-1;j=0;j--)

{

if(s1.charAt(i)==s2.charAt(j))

if(i==0||j==0)

{

num[j]=1;

max[i]=j;

str[i]=1;

}

else

{

num[j]=num[j-1]+1;

if(max[i]num[j])

{

max[i]=j;

str[i]=num[j];

}

}

else

num[j]=0;

}

for(k=0;km;k++) //求str数组的最大值

{

if(nummaxstr[k])

{

nummax=str[k];

}

}

for(k=0;km;k++)

if(nummax==str[k])

System.out.println(s2.substring(max[k]-str[k]+1,max[k]+1));

}

}

关于最大子数组java和最大子数组线性算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-30,除非注明,否则均为首码项目网原创文章,转载请注明出处。