劍指offer C 刷題總結(2)

2021-10-24 21:36:21 字數 1962 閱讀 1714

目錄

用兩個棧實現佇列

題目:題解:

完整**:

旋轉陣列最小的數字

題目:題解:

完整**:

斐波那契數列

題目:題解:

完整**:

跳台階題目:

題解:完整**:

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。

當發生push和pop操作時,對兩個棧實現一次資料置換操作,實現佇列的先進先出。

class solution

stack1.push(node);

}int pop()

int result = stack2.top();

stack2.pop();

return result;

}private:

stackstack1;

stackstack2;

};

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。

輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。

例如陣列[3,4,5,1,2]為[1,2,3,4,5]的乙個旋轉,該陣列的最小值為1。

note:給出的所有元素都大於0,若陣列大小為0,請返回0。

二分法(注意邊界條件的選擇)

class solution  else if(rotatearray[mid] > rotatearray[r])  else 

}return rotatearray[l];

}};

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0,第1項是1)。

n<=39

方法一:迭代,記憶化搜尋

方法二:動態規劃

class solution  

if(n == 1)

if(m.find(n) != m.end())

int result = fibonacci(n - 1) + fibonacci(n - 2);

m[n] = result;

return m[n];

}private:

mapm;

*/// 方法二:動態規劃

public:

int fibonacci(int n)

return dp[n];

}};

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法(先後次序不同算不同的結果)。

方法一:動態規劃

方法二:回溯

class solution 

vectordp(number, 0);

dp[0] = 1;

dp[1] = 2;

for(int i = 2; i < number; i++)

return dp[number - 1]; }*/

// 方法二:回溯

int result = 0;

int jumpfloor(int number)

void jump(int number, int tmp)

if(tmp > number)

jump(number, tmp + 1);

jump(number, tmp + 2);

}};

劍指offer C 刷題總結(1)

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。雙指標 class solution int n array 0 size int l 0 int r n 1...

劍指offer C 刷題總結(4)

目錄 調整陣列順序使奇數字於偶數前面 題目 題解 完整 鍊錶中倒數第k個節點 題目 題解 完整 反轉鍊錶 題目 題解 完整 合併兩個排序的鍊錶 題目 題解 完整 樹的子結構 題目 題解 完整 二叉樹的映象 題目 輸入描述 題解 完整 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的...

劍指offer刷題 2

思路 如果從前往後進行遍歷,那麼每次找到乙個空格,則需要新增兩個位元組來進行替換,我們採用先對字串進行遍歷,查詢字串中的空格的個數,然後對新的字串進行長度的計算,然後從後往前進行替換,每遇到乙個空字元,然後進行替換。class solution int oldnumber 0 int numbers...