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


    // test20.cpp : 定义控制台应用程序的入口点。
    //

    #include "stdafx.h"
    #include<iostream>
    #include<vector>
    #include<string>
    #include<queue>
    #include<stack>
    #include<cstring>
    #include<string.h>
    #include<deque>
    
    using namespace std;
    
    class Solution {
    public:
    	vector<int> FindNumbersWithSum(vector<int> array, int sum) {
    		if (array.empty()) return{};
    		auto small = array.begin(); //指向小的指针
    		auto big = array.end()-1; //指向大的指针
    		auto curr = big;
    		vector<vector<int>> vec;
    		vector<int> result;
    		
    		while (small<big)
    		{
    			while (small < curr)
    			{
    				if (*small + *curr == sum)  //找到第一组就能确定是乘积最小,所以不用做后续的比较
    				{
    					result.push_back(*small);
    					result.push_back(*curr);
    					vec.push_back(result);
    					result.clear();
    				}
    				else if (*small + *curr < sum)
    				{
    					break;
    				}
    				else
    				{
    
    				}
    				--curr;
    			}
    			small++;
    			curr = big;
    		}
    		if (vec.empty()) return{};
    		auto it = vec.begin();//这里面是多余的
    		int num1= *(it->begin());
    		int num2= *(it->begin() + 1);
    		int mult = num1*num2;
    		++it;
    		while (it!=vec.end())
    		{
    			if (mult >= (*(it->begin()))*(*(it->begin() + 1)))
    			{
    				num1 = *(it->begin());
    				num2 = *(it->begin() + 1);
    			}
    			++it;
    		}
    		result.clear();
    		result.push_back(num1);
    		result.push_back(num2);
    		
    		return result;
    	}
    };
    int main()
    {
    	
    	Solution so;
    	vector<int> v = { 1,2,3,4,5,6,7,8,9 };
    	vector<int> vec = so.FindNumbersWithSum(v,9);
    	for (auto it = vec.begin();it != vec.end();++it)
    	{
    		cout << *it << "  ";
    	}
    	
    	
    	cout << endl;
    	return 0;
    }
  • 相关阅读:
    记录优雅的pythonic代码
    记录python学习过程中的一些小心得
    关于理解python类的小题
    CSS3之属性选择器
    CSS3之初始
    HTML5+CSS3之离线web应用
    HTML5+CSS3之响应式视频以及iFrame下插入响应式视频的解决方案
    HTML5+CSS3之播放视频以及在IE8及以下的解决方案
    HTML5+CSS3响应式设计(二)
    HTML5+CSS3响应式设计(一)
  • 原文地址:https://www.cnblogs.com/wdan2016/p/6028098.html
Copyright © 2020-2023  润新知