2019 10 12刷題小結

2021-09-28 14:27:22 字數 1425 閱讀 4180

三道劍指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.最後再遍歷一遍陣列此時儲存的...