算法期中练习——1001. 最小差
2018-01-05 21:24
197 查看
算法期中练习——1001. 最小差
Description:对于一个整数数列A[0], A[1], …, A[N-1],要求在其中找两个数,使得它们的差的绝对值最小.
2 <= N <= 100, -1000 <= A[i] <= 1000.
Example:
例1:当A = {2, 7, -2}, 返回4.
例2:当A = {-8, 10, 30, 10}, 返回0.
请实现下面Solution类中计算minDifference(A)的函数,返回值为能得到的最小差.
class Solution { public: int minDifference(vector<int> A) { } };
分析:
定义一个变量difference,初始化为
abs(A[1]-A[0]),或者为一个比较大的数,然后循环遍历求相邻两个数的差的绝对值,与difference比较,从而更新最小差值。
代码如下:
#include <iostream> #include <vector> #include <algorithm> using namespace std; class Solution { public: int minDifference(vector<int> A) { int difference; sort(A.begin(), A.end()); difference = abs(A[1] - A[0]); for (int i = 1; i < A.size() - 1; i++) { if (abs(A[i] - A[i + 1]) < difference) { difference = abs(A[i] - A[i + 1]); } } return difference; } }; // another solution class Solution { public: int minDifference(vector<int> A) { int res, n; n = A.size(); sort(A.begin(), A.end()); res = 1000000000; for (int i = 0; i < n - 1; i++) res = min(res, A[i + 1] - A[i]); return res; } }; int main() { Solution s; int n; cin >> n; vector<int> A(n); for (int i = 0; i < n; i++) { cin >> A[i]; } cout << s.minDifference(A) << endl; return 0; }
相关文章推荐
- 算法期中练习——1005. 最小和
- 蓝桥杯练习系统算法训练——最小公倍数
- 算法练习一:最大公约数与最小公倍数
- 算法练习六:旋转数组的最小数字
- 贪心算法练习:寻找最小数
- “用最小堆将k个已排序链表合并为一个排序链表”(算法导论 练习6.5-9)
- 算法期中练习——1002. 合并二叉树
- 【基础算法练习】【最短路+图的遍历+最小生成树】水题 C+ E+ F-----AC题
- 算法笔记_062-蓝桥杯练习 最小乘积(基本型)(Java)
- 【算法练习】(10)求最大最小数
- poj 1258 小白算法练习 Agri-Net 最小生成树 prim kruskal
- 小白算法练习 安慰奶牛 最小生成树 lanqiao prim
- 算法期中练习——1003. 最近的0
- 算法练习(31):最小和
- 算法笔记_062-蓝桥杯练习 最小乘积(基本型)(Java)
- 牛客网NowCoder 2018年全国多校算法寒假训练营练习比赛(第四场)A.石油采集(dfs) B.道路建设(最小生成树prim) C.求交集(暴力) F.Call to your teacher(迪杰斯特拉乱用) H.老子的全排列呢(dfs)
- 算法笔记_062-蓝桥杯练习 最小乘积(基本型)(Java)
- 算法练习——ACM_1001_Exponentiation
- 小白算法练习 最小生成树 POJ 2485 Highways
- 算法笔记_062-蓝桥杯练习 最小乘积(基本型)(Java)