java 具有给定总和的子数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 具有给定总和的子数组相关的知识,希望对你有一定的参考价值。
import java.util.*;
public class SubArrayWithSum {
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[]) {
SubArrayWithSum subArrayWithSum = new SubArrayWithSum();
int[][] input = {
null,
{},
{1},
{2,6,0,9,7,3,1,4,1,10},
{0,5,-7,1,-4,7,6,1,4,19}
};
for(int i=0; i< input.length; i++) {
int sum = 15;
System.out.println("Input: " + Arrays.toString(input[i]) + ", sum=" + sum +" Result: " + subArrayWithSum.find(input[i], sum));
sum = -3;
System.out.println("Input: " + Arrays.toString(input[i]) + ", sum=" + sum +" Result: " + subArrayWithSum.find(input[i], sum));
}
}
public Pair find(int[] input, int sum) {
if(input == null || input.length < 1){
return null;
}
int windowSum = 0;
int start = 0;
int end = 0;
for(start=0;start<input.length;start++){
while(windowSum < sum && end < input.length){
windowSum += input[end++];
}
if(windowSum == sum) {
return new Pair(start, end-1);
}
windowSum -= input[start];
}
return null;
}
}
以上是关于java 具有给定总和的子数组的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 最大子阵列总和。在具有最大总和的数组(包含至少一个数字)中查找连续的子数组。
数字总和可被 K 整除的子数组的数量
java 找到具有给定总和的最大长度子阵列
如何在 O(nlogn) 中找到总和最接近零或某个值 t 的子数组
计算具有给定总和的子集的有效方法
Leetcode523. 连续的子数组和