劍指offer C 一天一題 3

2021-10-06 17:41:06 字數 1973 閱讀 2793

今日碎碎念:今天看牛客網又看到演算法諸神黃昏之類的論調,以及一些前輩們勸轉開發,總之我現在只能兩手準備畢竟之前花時間搞了比賽和文章啊~一年應該差不多 要加油啊~

題目描述

輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個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

今日碎碎念 天晴了 題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。解題分析 乙個關鍵點是 相對位置不變 基本思想是遇見乙個奇數,就把它插入上乙個奇數後面 因為是插入這個...