递增数列中找和为s乘积最小的两个数
来源:互联网 发布:java 浏览器 编辑:程序博客网 时间:2024/06/04 14:07
#include<cstdio>void getSumKPair(int *arr, int n, int k, int &a, int &b){ int nLow, nHigh; long long product; nLow = 0, nHigh = n-1; a = b = -1, product = 0x7fffffff; int flag=0; while(nLow < nHigh) { if(arr[nLow] + arr[nHigh] == k ) { if(!flag){ a = nLow; b = nHigh; product = arr[a] * arr[b]; ++nLow, --nHigh; } else if(arr[nLow] + arr[nHigh] < k) ++nLow; else --nHigh; }}const int MAX = 1000005;int arr[MAX];int main(){ int n, k, a, b; while(scanf("%d %d", &n, &k) != EOF) { for(a = 0; a < n; ++a) scanf("%d", &arr[a]); getSumKPair(arr, n, k, a, b); if(a == -1) puts("-1 -1"); else { a = arr[a]; b = arr[b]; if(a > b) printf("%d %d\n", b, a); else printf("%d %d\n", a, b); } } return 0;}
0 0
- 递增数列中找和为s乘积最小的两个数
- 求递增序列中和为S的乘积最小的两个数
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 数组中,输出和为S的最小乘积
- 面试金典之(一)找出和为SUM的递增数组array中的两个数使之乘积最小
- 输入一个递增排序的数组和一个数字s,在数组中寻找两个数,使得这两个数的和为s
- 41-所有和为s的连续正数序列/递增数列中和为s的两个数字
- 剑指offer系列之四十一:和为S的两个数字且乘积最小
- 剑指offer——和为s的两个数字且乘积最小
- 有序数列中查找和为某定值的两个数
- 给定一个递增排序的数组和一个数字s,求数组中和为s的俩个数。求乘积最小的俩个数
- 面试题41:和为s的两个数VS和为s的连续正数数列
- 在一个数组中找两个数,使得它们的和为一个指定的数
- 和为S的两个数
- 和为S的两个数
- c++ 基础 指针
- git commit命令的使用与git默认编辑器的修改
- C++基础:怎样判断某一文件是否存在
- 新追求
- 好多有用的例子
- 递增数列中找和为s乘积最小的两个数
- RedHat 6.4 64位 图文安装Oracle 11g
- C++中的const限定修饰符
- 【Halcon】halcon中的常用算子的中文说明
- 你会购买电子书吗
- LeetCode-Remove Duplicates from Sorted List II
- 梯度下降算法- gradient descent
- C++中获取WinNT/Win2k当前用户名和密码
- 阶梯博弈(poj 1704)