和为S的两个数字

偏执的太偏执、 2022-03-08 01:48 252阅读 0赞

时间限制:1秒 空间限制:32768K 热度指数:173625

算法知识视频讲解

题目描述

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

输出描述:

  1. 对应每个测试案例,输出两个数,小的先输出。
  2. class Solution {
  3. public:
  4. vector<int> FindNumbersWithSum(vector<int> array,int sum) {
  5. int i=0,j=array.size()-1,num1,num2;
  6. vector<int> v;
  7. int flag=0;
  8. while(i<j){
  9. if(array[i]+array[j]>sum){
  10. j--;
  11. }else if(array[i]+array[j]<sum){
  12. i++;
  13. }else{
  14. if(flag==0){
  15. num1=array[i];
  16. num2=array[j];
  17. flag=1;
  18. }else{
  19. if(num1*num2>array[i]*array[j]){
  20. num1=array[i];
  21. num2=array[j];
  22. }
  23. i++;
  24. j--;
  25. }
  26. }
  27. }
  28. if(flag==1){
  29. v.push_back(num1);
  30. v.push_back(num2);
  31. }
  32. return v;
  33. }
  34. };

发表评论

表情:
评论列表 (有 0 条评论,252人围观)

还没有评论,来说两句吧...

相关阅读

    相关 编程题:s数字

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

    相关 s数字

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