一天一道算法题---5.26---思维锻炼
2014-05-27 00:52
190 查看
感谢 微信平台: 一天一道算法题 ----- 大家没事都可以去关注他 --- 不是做广告的----
题目大意: 给你一个长度为n的整数序列A1,A2,……,An,找出两个整数Ai和Aj(i<j),使得Ai-Aj尽量大
反正 暴力肯定超时..... 数据大小 我也就给出了 反正 尽量用最好算法去解 就是了
嗯 它给的是o(n)的时间复杂度和空间度 但是很容易转换成o(1)空间度 o(n)时间复杂度的写法
这边给出个 与这题意相同的一个 题目 发现竟然是我以前WA的 怪不得 那么熟悉 。。。
哎 戳我
好吧 无限WA中 不管了 先把错误代码贴上来 郁闷……
View Code
题目大意: 给你一个长度为n的整数序列A1,A2,……,An,找出两个整数Ai和Aj(i<j),使得Ai-Aj尽量大
反正 暴力肯定超时..... 数据大小 我也就给出了 反正 尽量用最好算法去解 就是了
嗯 它给的是o(n)的时间复杂度和空间度 但是很容易转换成o(1)空间度 o(n)时间复杂度的写法
这边给出个 与这题意相同的一个 题目 发现竟然是我以前WA的 怪不得 那么熟悉 。。。
哎 戳我
好吧 无限WA中 不管了 先把错误代码贴上来 郁闷……
#include <iostream> #include <stdio.h> #include <algorithm> using namespace std; int main() { int t, n; long long temp, l, r; long long x, y; long long num; long long mmax, result; scanf("%d", &t);//T组数据 while (t--) { scanf("%d", &n);//n个元素大小的数组 scanf("%lld", &x); mmax = x; l = temp = 0;//左边元素位置 temp起到 暂时存储的作用 如果没有小的元素出现 就不需要改变 L 的值 r = 1;//右边元素位置 for (int i = 1; i<n; i++) { scanf("%lld", &num);//其余的n-1个元素 if (i == 1 || mmax - num > result) { result = mmax - num; l = temp; r = i; } if (num > mmax) { temp = i; mmax = num; } } printf("%lld %lld %lld\n", result, l + 1, r + 1); //分别+1 是因为求的是 元素位置 } return 0; }
View Code
相关文章推荐
- 一天一道算法题--5.27--思维题
- 一天一道算法题--6.18--思维题
- 一天一道算法题--6.14--思维题
- 一道简单题( East Problem from Rujia Liu 11991Uva)(数据结构)(锻炼思维好题)
- 《github一天一道算法题》:插入排序
- 一天一道算法题---6.4--中途相遇法
- 一天一道算法题—2015-10-22(等概率的随机数)
- 一天一道算法题--6.7--stack
- 一天一道算法题--6.13---计算几何
- 算法——一天一道算法题篇——找只出现一次的两个数
- 一天一道算法题--6.10--变量交换
- 一天一道算法题--6.19--二分搜索
- 一天一道算法题--6.25--无定义
- 一天一道算法题--6.5--数学题
- 一天一道算法题---6.20--数学题
- 一天一道算法题---6.26---二分查找
- 一天一道算法题--5.25--bfs或者最短路
- 一天一道算法题--6.9--数学题
- 一天一道算法题—2015-10-15
- 一天一道算法题---6.27---二分图