【牛客网】马三来刷题之最大差值
生活随笔
收集整理的這篇文章主要介紹了
【牛客网】马三来刷题之最大差值
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
按難度排序,找了一道最水的題先來做做,題目鏈接:http://www.nowcoder.com/practice/1f7675ae7a9e40e4bd04eb754b62fd00?tpId=49&tqId=29281&rp=6&ru=/ta/2016test&qru=/ta/2016test/question-ranking??
最大差值- 熱度指數(shù):4410時(shí)間限制:3秒空間限制:32768K
- 本題知識(shí)點(diǎn):?貪心
- ?算法知識(shí)視頻講解
題目描述
有一個(gè)長為n的數(shù)組A,求滿足0≤a≤b<n的A[b]-A[a]的最大值。
給定數(shù)組A及它的大小n,請(qǐng)返回最大差值。
測(cè)試樣例: [10,5],2 返回:0 比較簡單的動(dòng)態(tài)規(guī)劃題,用了兩種方法過的(也不能說兩種方法,只不過后一種方法復(fù)雜度比較低~)。方法一就是用雙層循環(huán)遍歷,方法二的復(fù)雜度比較低,用了一個(gè)循環(huán)就解決了,在循環(huán)內(nèi)同時(shí)做兩件事情,一個(gè)是更新最小值,一個(gè)是更新最小差值。方法1:
int getDis(vector<int> A, int n) {//時(shí)間復(fù)雜度O(n^2) 空間復(fù)雜度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) {//時(shí)間復(fù)雜度O(n) 空間復(fù)雜度O(1)// write code hereint 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; }每天一道題,保持新鮮感,就這樣~
總結(jié)
以上是生活随笔為你收集整理的【牛客网】马三来刷题之最大差值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 储存profiles是什么意思_prof
- 下一篇: Protocol(一)[概述]