zoukankan      html  css  js  c++  java
  • 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字

    题目:输入一个已经按升序排序过的数组和一个数字,
    在数组中查找两个数,使得它们的和正好是输入的那个数字。
    要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。

    例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。

    #include<iostream>
    using namespace std;
    
    void test(int* data,int& first,int& last,int targetNum)
    {
    	if(first>=last)
    	{
    		cout<<"NO NUM"<<endl;
    		return;
    	}
    	if((data[first]+data[last])==targetNum)
    	{
    		cout<<data[first]<<" "<<data[last]<<endl;
    		return;
    	}
    	else if((data[first]+data[last])<targetNum)
    	{
    		first++;
    	}
    	else
    		last--;
    	test(data,first,last,targetNum);
    }
    void main()
    {
    	int data[]={1,2,4,7,11,15};
    	int targetNum=15;
    
    	int length=sizeof(data)/sizeof(int);
    	int firstIndex=0,lastIndex=length-1;
    	test(data,firstIndex,lastIndex,targetNum);
    }

  • 相关阅读:
    elasticSearch 查询 bool
    elasticSearch 查询 term
    elasticSearch 查询 match
    python re
    vue day1
    mysql 报错记录
    node.js vue.js 安装
    mysql 插入数据 ,存在跳过
    打印乘法口诀表
    初步使用分支、循环判断数字大小
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3290157.html
Copyright © 2011-2022 走看看