java 具有k个元素的最小子数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 具有k个元素的最小子数组相关的知识,希望对你有一定的参考价值。
import java.util.*;
public class MinSubArray {
class Pair{
int start;
int end;
Pair(int start, int end) {
this.start = start;
this.end = end;
}
int length(){
return end - start;
}
public String toString(){
return "[" + start + "," + end + "]";
}
}
public static void main(String args[]) {
MinSubArray minSubArray = new MinSubArray();
int[][] input = {
null,
{},
{1},
{0,1,11,3,1,3,4},
{10,4,2,5,6,3,8,1}
};
for(int i=0; i< input.length; i++) {
for(int k=0;k< 10;k++){
System.out.println("Input: " + Arrays.toString(input[i]) + ", k=" + k +" Result: " + minSubArray.find(input[i], k));
}
}
}
public Pair find(int[] input, int k) {
if(input == null || input.length < 1 || k == 0){
return null;
}
if(k > input.length) {
return new Pair(0, input.length-1);
}
int currentSum = 0;
int minSoFar = Integer.MAX_VALUE;
Pair result = new Pair(-1,-1);
for(int i=0; i<input.length; i++) {
currentSum += input[i];
if(i+1 >= k) {
if(minSoFar > currentSum) {
minSoFar = currentSum;
result.start = i+1-k;
result.end = i;
}
currentSum = currentSum - input[i+1-k];
}
}
return result;
}
}
以上是关于java 具有k个元素的最小子数组的主要内容,如果未能解决你的问题,请参考以下文章
5893. 含特定字母的最小子序列(单调栈)
LeetCode 1403.非递增顺序的最小子序列
406. 和大于S的最小子数组
将数组拆分为包含唯一对象组合的最小子数组
区间DP POJ1160村庄邮局问题
每日一题1403. 非递增顺序的最小子序列