三道劍指offer,一道leetcode,完成。
1.斐波那契數列
num1=1;num2=1;next=num2+num1;num1=num2;num2=next;
int fibonacci(int n)
if(n==1||n==2)
int pre1=1;
int pre2=1;
int res=0;
for(int i=3;i<=n;i++)
return res;
}
2.青蛙跳台階,可以跳1階,可以跳兩階。
思路:當前n階台階可以由n-2和n-1階跳上來。只是初始num1=1;num2=2;
int jumpfloor(int number)
int pre1=1;
if(number==1)
int pre2=2;
if(number==2)
int res=0;
for(int i=3;i<=number;i++)
return res;
}
3.**跳台階,可以跳1階,可以跳兩階...可以跳n階。
f(1)=1;f(2)=f(1)+1=2;f(3)=f(1)+f(2)+1=2*f(2);f(4)=f(1)+f(2)+f(3)+1=2*f(3)......f(n)=2*f(n-1).
int jumpfloorii(int number)
int pre1=1;
if(number==1)
int pre2=2;
if(number==2)
int res=0;
for(int i=3;i<=number;i++)
return res;
}
4.max-points-on-a-line,二維數軸上最多有多少點共線。
思路:考點是窮舉,每次統計重複點,x軸相同點,和其他斜率點,其他斜率點用map資料結構,每次從x軸相同點和斜率點更新當前最多共線的點。最後更新結果=max(之前統計的最多點,當前點最多共線點+重複點)。
int maxpoints(vector&points)
int res=0;
for(int i=0;imp;//記錄不同的斜率的點
int curmax=1;//記錄此時的最多的點的個數
for(int j=i+1;jelse if(xi==0)
else
curmax=max(curmax,val);
}else
else
curmax=max(curmax,mp[k]);}}
res=max(res,curmax+rep);
}return res;
}
2019 10 10刷題小結
今天的目標三道劍指offer,一道leetcode。完成 1.二維陣列查詢某個數是否存在,陣列是從左到右,從上到下依次增大的,可以從右上角和左下角開始查詢。以右上角為例。a 首先處理一下特殊情況,獲取一下二維陣列的行數,如果二維陣列為空直接返回false.b 再獲取列數。從右上角開始查詢的話則當前行...
2019 10 15刷題小結
三道劍指offer,一道leetcode,完成。1.合併兩個排序鍊錶。a 如果任何乙個鍊錶為空,那麼返回另乙個煉表頭結點即可。b 申請兩個鍊錶節點變數,乙個用來當做返回的頭結點,乙個用來作為新鍊錶的遍歷。c 最後別忘了把剩下的加到新鍊錶的最後。listnode merge listnode phea...
2019 10 18刷題小結
三道劍指offer一道leetcode。1.陣列中超過一半的數。申請兩個變數,乙個代表當前出現次數最多的數字,乙個代表相對出現的次數。分別初始化為陣列第乙個數和1.如果下乙個數和當前數相同,次數 否則次數 如果次數減為0,那麼就把當前數更新為此時遍歷的數,次數初始化為1.最後再遍歷一遍陣列此時儲存的...