您的位置:首页 > 其它

一个有序数组数组,给出和为s的两个数字和连续正数数列

2015-07-07 21:27 423 查看
package java_study.JianZhiOffer;

import org.junit.Test;

/**
* Created by ethan on 2015/7/7.
* 剑指offer的No41 一个有序数组数组,给出和为s的两个数字和连续正数数列
*/
public class No41和为s的两个数字和连续正数数列 {

public void getPairsWithSumS(int[] arr, int s){
if (arr == null) return;
int start = 0;
int end = arr.length-1;
while (start<end){
if (arr[start]+arr[end]==s){
System.out.println(arr[start]+ " " + arr[end]);
start++;
}
else if(arr[start]+arr[end]>s)
end--;
else
start++;
}
}

public void getSeqenceWithSumS(int[] arr, int s){
if (arr == null) return;
if (arr.length == 1) return;
int start = 0;
int end = 1;
int sum = arr[start] + arr[end];
while (end<arr.length){
if (sum==s){
getPrintln(arr, start, end);
sum -= arr[start];
start++;
}else if (sum<s){
end++;
if (end>=arr.length)
return;
sum += arr[end];
}else {
sum -= arr[start];
start++;
}
}
}
public void getPrintln(int[] arr, int start, int end){
for (int i=start; i<=end; i++){
System.out.print(arr[i] + " ");
}
System.out.println();
}

@Test
public void test(){
int[] arr = {1,2,4,7,11,15};
getPairsWithSumS(arr, 15);
int[] arr1 = {1,2,3,4,5};
getSeqenceWithSumS(arr1, 9);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息