按难度排序,找了一道最水的题先来做做,题目链接:http://www.nowcoder.com/practice/1f7675ae7a9e40e4bd04eb754b62fd00?tpId=49&tqId=29281&rp=6&ru=/ta/2016test&qru=/ta/2016test/question-ranking
最大差值
- 热度指数:4410时间限制:3秒空间限制:32768K
- 算法知识视频讲解
题目描述
有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。
给定数组A及它的大小n,请返回最大差值。
测试样例:
[10,5],2
返回:0
方法1:
int getDis(vector<int> A, int n) {//时间复杂度O(n^2) 空间复杂度O(1)
int maxn=0;
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
maxn=max(maxn,(A[j]-A[i]));
}
}
return maxn;
}
方法2:
int getDis(vector<int> A, int n) {//时间复杂度O(n) 空间复杂度O(1)
// write code here
int maxDiff=0;//初始化最大差值
int minNum=A[0];//初始化最小值
for(int i=1;i<n;++i){//遍历
if(A[i]<minNum)minNum=A[i];//更新最小值
if(A[i]-minNum>maxDiff)maxDiff=A[i]-minNum;//更新最大差值
}
return maxDiff;
}
每天一道题,保持新鲜感,就这样~