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

    要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字M,输出任意一对即可。
    例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。

    思路:

    (1)让指针指向数组的头部和尾部,相加,如果小于M,则增大头指针,如果大于则减小尾指针

    (2)退出的条件,相等或者头部=尾部

    算法:

    void function(int a[],int n,int M){

          int i=0,j=n-1;

      while(i!=j){

               if(a[i]+a[j]==M){

          printf("%d,%d",a[i],a[j]);

                     break;

        }

        a[i]+a[j]>M?j--:i++;

      }

    }

  • 相关阅读:
    socket通信原理
    socket通信基础内容
    内核中断过程
    爬虫基础模块
    关于多个运算符的问题
    前戏
    js扩展
    加密
    django之form
    Django
  • 原文地址:https://www.cnblogs.com/GoAhead/p/2518338.html
Copyright © 2011-2022 走看看