一个有序数组数组,给出和为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);
    }
}

给定一个单调递增有序数组A,给定一个数字N,试给出一个算法得到A中该数字N出现的次数。

#include int findN(int arr[], int n, int len) { int left, right, mid, i, res; // first fin...
  • z_x_b5
  • z_x_b5
  • 2013年02月27日 22:14
  • 412

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

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

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

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

程序员面试金典——解题总结: 9.17中等难题 17.8给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和

#include #include #include using namespace std; /* 问题:给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和 分析:这个是...

有序整型数组A,大小为n,请给出一个O(n)的算法,删除重复元素,O(1)空间

/*  *   给定排好序的整型数组A,大小为n,请给出一个O(n)的算法,删除重复元素,且不能使用额外空间。  *  *   提示:既然有重复,必有冗余空间。将元素放入数组的前面,并记录下次可...

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

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

剑指offer 面试题41 递增数组中和为s的两个数字 | 和为s的连续整数序列

#include using namespace std; void TwoNum(int* num,int len,int s){ if(!num||len

给出两个长度为N的有序数组A和B 给出求中位数的算法

有个同学阿里面试被问到“给出两个长度为N的有序数组A和B 给出求中位数的算法”  怎么办??很熟悉是吧 但是就是想不起来。。 题目是《算法导论》上的一道习题,不过已多次出现在面试题当中。注意,此题中两...
  • Gongxs7
  • Gongxs7
  • 2015年03月22日 16:42
  • 513

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

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

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

第四题 一个有序数组a={1,3,6,.....,89,...,90318..}和一个数X,从数组中找出两个数,使得两个数的和等于X,要使时间复杂度尽量的低。 LZ的思路  第一个想...
  • brk1985
  • brk1985
  • 2014年01月25日 23:35
  • 682
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个有序数组数组,给出和为s的两个数字和连续正数数列
举报原因:
原因补充:

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