目錄
用兩個棧實現佇列
題目:題解:
完整**:
旋轉陣列最小的數字
題目:題解:
完整**:
斐波那契數列
題目:題解:
完整**:
跳台階題目:
題解:完整**:
用兩個棧來實現乙個佇列,完成佇列的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...