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);
    }

  • 相关阅读:
    keep-alive
    关于前端的网络攻击
    Webpack
    https加密
    JS的变量提升
    浏览器
    http请求状态码
    Python程序结构-模块
    Python面向对象编程-继承
    Python语法(高级语法)- 命名空间和作用域
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3290157.html
Copyright © 2011-2022 走看看