寻找和为定值的两个数-三种解法
来源:互联网 发布:webbench 源码 编辑:程序博客网 时间:2024/06/14 21:56
#include<iostream>#include<vector>#include<assert.h>using namespace std;int main2017713(void)//解法1 时间复杂度 n*n{ int a[] = { 1, 2, 4, 7, 11, 15,2,4,8,10,6,1,8,3,4,5,6,7,8,9,10 }, n = sizeof(a) / (sizeof(&a)); for (int i = 0; i < n-1; i++) for (int j = i + 1; j < n; j++) if ((a[i] + a[j]) == 15) cout << a[i] << " " << a[j] << " " << 15 << endl; system("pause"); return 0;}int Binarysearch(int *a, int n , int x){ assert(a != NULL); int high = n - 1, low = 0, mid = 0; while (low <= high) { mid = (low + high) / 2; if (a[mid] == x) return mid; else if (a[mid] > x) high = mid - 1; else low = mid + 1; } return -1;}int Binarysearch1(int *a, int low, int high, int x){ assert(a != NULL); if (low > high) return -1; int mid = (low + high) / 2; if (x == a[mid]) return mid; else if(x > a[mid]) return Binarysearch1(a, mid + 1, high, x); else return Binarysearch1(a, low, mid - 1, x);}void main20171714(void) { int a[] = { 1, -1, 2, 0, 12, 8, 7 }, n = sizeof(a) / sizeof(&a); int ret = Binarysearch(a, n, 80); int ret1 = Binarysearch1(a,0, n-1, 80); if (ret1) cout << (a[ret1] == 8) << endl; else cout << a[ret1] << endl; system("pause");}int main20171714_2(void)//解法2 时间复杂度nlgn{ int a[]{1, 2, 4, 7, 11, 15}, n = sizeof(a) / sizeof(&a); int temp1; cin >> temp1; for (int i = 0; i < n; i++) { int ret = Binarysearch(a, n, temp1 - a[i]); if (ret!=-1) cout << a[ret] << " " << a[i] <<" "<< temp1 << endl; } system("pause"); return 0;}int main(void)// 解法3从一头一尾查询{ int a[]{1, 2, 4, 7, 11, 15}, n = sizeof(a) / sizeof(&a); int tmp; cin >> tmp; vector<int>a_tmp; for (int i = 0; i < n; i++) a_tmp.push_back(tmp - a[i]); int j = a_tmp.size() - 1; for (int i = 0; i < j;) { if (a[i] == a_tmp[j]) { cout << a[i] << " " << a[j] << " " << tmp << endl; i++; j--; } else if (a[i] > a_tmp[j]) j--; else if (a[i] < a_tmp[j]) i++; } system("pause"); return 0;}
阅读全文
0 0
- 寻找和为定值的两个数-三种解法
- 寻找两个数的和为定值的算法
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找满足和为定值的两个数
- 寻找和为定值的两个数/多个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 【算法】寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- 数组------寻找和为定值的两个数
- 寻找和为定值的两个数
- 寻找和为定值的两个数
- A
- Linux驱动调试-堆栈log
- Linux关机命令详解
- Core Graphics基础和实践
- 常用的IDea插件
- 寻找和为定值的两个数-三种解法
- oracle数据库字符集的修改(改Oracle字符集到utf-8为例)
- NET Core 三层架构,依赖注入
- MyBatis使用
- github使用入门
- JavaSE
- bokeh.plotting API
- 欢迎使用CSDN-markdown编辑器
- ios-NSString和NSMutableString函数