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

原创 2015年07月07日 21:27:10
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);
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

如何在有序数组中给出指定数字出现的次数

问题描述:如何在有序数组中给出指定数字出现的次数,例如:数组{1,2,2,2,3,4,5} 数字2的出现次数为3。 最简单的方法是遍历数组,代码如下: #include //如何在有序数组中给出...

程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】

6、分别用递归和非递归实现二分查找算法 分析:

41-所有和为s的连续正数序列/递增数列中和为s的两个数字

这里用到一个等差数列公式:      Sum=(small+big)n/2; vector > FindContinuousSequence(int sum) { vector v; vec...

给出一个数和一个有序数组,找出该数组中之和等于该数的两个数

今天写的一个版本: 1、有序数组,先写一个二分查找的方法 private static int[] erfen(int[] a,int left,int right,int num) { //...

一个有序数组中找出两个数,使得两个数的和等于X的C++实现源代码

第四题 一个有序数组a={1,3,6,.....,89,...,90318..}和一个数X,从数组中找出两个数,使得两个数的和等于X,要使时间复杂度尽量的低。 LZ的思路  第一个想...

数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法,找到x

数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法,找到x。 2013-09-07 19:57 1365人阅读 评论(3) 收藏 举报  分...

【指针】16周项目四。判断两个有序数组中是否存在相同的数字

上机内容:C++程序的编写和运行 上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程 我的程序:/* Copyright (c) 2013, 烟台大学计算机学院 * All r...

两个有序数组中第k小的数字

已知两个数组均为有序的,找出第k小的数。

两个有序数组求交集,C++

  • 2010-11-01 16:18
  • 692B
  • 下载

面试题41:和为s的两个数VS和为s的连续正数数列

问题说明: 1.和为s的两个数问题是从一个排序的数组中找出和为s的两个数; 2.原题是找出一个即可,现在全部找出; 3.和为s的连续正数数列是给定一个数找出所有连续正数数列的和为s,例如s为9,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)