2020.07 P7阿里面试题之滑动窗算法(阿里云面试)
程序员文章站
2022-04-15 23:38:27
题目是有一个数据之中的数字可能为正负整数,求连续n个数之和的最大值。其实就是双指针滑动记录循环中的最大值。实现:import java.math.BigDecimal;public class Test9 { /*public double test(Double x,int flage){ double returnData = 0.0; double x1 = 0; double x2 = x; double p...
题目是有一个数据之中的数字可能为正负整数,求连续n个数之和的最大值。
其实就是双指针滑动记录循环中的最大值。
实现:
import java.math.BigDecimal;
public class Test9 {
/*public double test(Double x,int flage){
double returnData = 0.0;
double x1 = 0;
double x2 = x;
double point = ;
while(new BigDecimal(x).)
return returnData;
}*/
/*public int test(int[] arr){
int maxtotal = 0;
for(int i = 0;i<arr.length;i++){
int sumTotal =arr[i];
int sumTotalMax = 0;
for(int j = i+1;j<arr.length;j++){
if(sumTotal+arr[j]>sumTotalMax){
sumTotalMax = sumTotal+arr[j];
}
sumTotal=sumTotal+arr[j];
}
if(sumTotalMax>maxtotal){
maxtotal = sumTotalMax;
}
}
return maxtotal;
}*/
public int test(int[] arr){
int maxtotal = 0;
for(int i = 0;i<arr.length;i++){
int sumTotal =arr[i];
int sumTotalMax = 0;
//这里做了一个判断判断的依据是前一个数是整数,后一个数是负数
if(i+1<arr.length&&sumTotal+arr[i+1]<arr[i+1]){
continue;
}
for(int j = i+1;j<arr.length;j++){
if(sumTotal+arr[j]>sumTotalMax){
sumTotalMax = sumTotal+arr[j];
}
sumTotal=sumTotal+arr[j];
}
if(sumTotalMax>maxtotal){
maxtotal = sumTotalMax;
}
}
return maxtotal;
}
public static void main(String[] args) {
Test9 test9 = new Test9();
int[] arr = {-2,11,-4,13,-5,2};
System.out.println(test9.test(arr));
}
}
本文地址:https://blog.csdn.net/sai739295732/article/details/107349768
上一篇: CompletableFuture
下一篇: PHP 语法引用使用及实现