zoukankan      html  css  js  c++  java
  • 剑指offer 和为S的两个数字

    题目:

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

    输出描述:

    对应每个测试案例,输出两个数,小的先输出。

    代码:

     1 class Solution {
     2 public:
     3     vector<int> FindNumbersWithSum(vector<int> array,int sum) {
     4         vector<int> p;
     5         int length = array.size();
     6         int low = 0, high = length -1;
     7         while(low < high){
     8             int Sum = array[low] + array[high];
     9             if( Sum < sum) low ++;
    10             else if( Sum > sum) high --;
    11             else{
    12                 p.push_back(array[low]);
    13                 p.push_back(array[high]);
    14                 break;
    15             }
    16         }
    17         return p;
    18     }
    19 };

    我的笔记:

      利用滑动窗口的原理,设置上限指针和下限指针,并根据Sum和的情况来移动指针,题目要求乘积最小,通过这样计算可以发现,两数距离越大。

  • 相关阅读:
    公司实习职位与要求
    段子
    Python 练习项目1 弹球游戏
    精准控制PWM脉冲的频率和数量
    ST Link 调试问题总结
    验证
    大道至简(第六章)读后感
    动手动脑
    大道至简(第五i章)读后感
    数组课后作业
  • 原文地址:https://www.cnblogs.com/john1015/p/13087884.html
Copyright © 2011-2022 走看看