今日碎碎念:今天看牛客網又看到演算法諸神黃昏之類的論調,以及一些前輩們勸轉開發,總之我現在只能兩手準備畢竟之前花時間搞了比賽和文章啊~一年應該差不多 要加油啊~
題目描述
輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist。
解題思路
鏈結1:link
鏈結2:link
知識點
鍊錶arraylist
arraylist list = new arraylist()
;for
(int i=
0;i<
10;i++
)//給陣列增加10個int元素
list.
add(i)
;
vectortest;//建立乙個vector
test.push_back(1);
test.push_back(2);//把1和2壓入vector,這樣test[0]就是1,test[1]就是2
stack::push();//在棧頂增加元素
queue::push();//將x 接到佇列的末端
結構體
struct 結構體型別名//struct是關鍵字
結構體變數表;
//可以同時定義多個結構體變數,用「,」隔開 也可以用時再定義
結構體元素訪問:
結構體變數名->val
結構體變數名.val
本題中煉表結構定義
struct listnode
};
分析:1.c++中要求結構體名字和結構體裡的函式同名,就相當於類和建構函式,這個同名的函式是為了初始化這個結構裡的成員變數的。所以struct listnode裡面有個同名函式listnode用於結構體的初始化 2.val(x)用到就是c++中變數賦初值,除了我們常用的賦值號=,還有小括號賦值。3.關於int *p和int* p
int* p, p1; // probable error: p1 is not an int這裡,把放得離p近一點也同樣不能澄清問題:
int *p, p1; // probable error為了保險起見,只好一次宣告乙個變數了——特別是當宣告伴隨著初始化之時。
int* p, p1; // probable error: p1 is not an int*
而int* p = &i;
int p1 = p; // error: int initialized by int*它會報錯。
本題**
解法一:迭代法翻轉鍊錶
vector<
int>
printlistfromtailtohead
(listnode* head)
vector<
int> ret;
while
(pre)
return ret;
}
測試結果
解法二:棧
/**
* struct listnode
* };
*/class solution
while
(!node.
empty()
)return result;}}
;
解法三:遞迴法翻轉鍊錶
參考:鏈結1:link
解法四:用現有的std::reverse函式
參考:鏈結1:link
劍指offer C 一天一題 4
今日碎碎念 事情永遠幹不完啊 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。解題思路 前序的第乙個數是節點 中序找到節點位置,節點左為左樹,右為右樹 遞迴 實現 def...
劍指offer C 一天一題 9
今日碎碎念 雨快停了 題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級 它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。知識點 貪心演算法 a.建立數學模型來描述問題 b.把求解的問題分成若干個子問題 c.對每一子問題求解,得到子問題的區域性最優解 d.把子問題的解區域性最優解合...
劍指offer C 一天一題 13
今日碎碎念 天晴了 題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。解題分析 乙個關鍵點是 相對位置不變 基本思想是遇見乙個奇數,就把它插入上乙個奇數後面 因為是插入這個...