《劍指offer》第三 四 五題(js)

2021-10-04 06:58:25 字數 1044 閱讀 2448

輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist。

方法一: 棧方法 push() + reverse()

/*function listnode(x)*/

function printlistfromtailtohead(head)

return arraylist.reverse();

}

方法二: 佇列方法 unshift();
function printlistfromtailtohead(head)

return arraylist;

}

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

思路:前序遍歷的第乙個是根節點,在中序遍歷中找到這個根節點的位置,則在這個跟節點前面的是這個根節點的左子樹,在這個根節點後面的是這個根節點的右子樹,將左右子樹遞迴下去,就可以得到這個二叉樹。

function treenode(x) 

function reconstructbinarytree(pre, vin)

else

return node;

}

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

思路:棧是先進後出(隊尾是出入口),佇列是先進先出(兩個出口,像我們排隊一樣)。所以push()方法是一樣的,關鍵在pop()。我們可以把棧1的資料拿出來,放進棧2。那麼先進棧1的就會最後從棧1出來,到棧2的尾端。這時候我們再從棧2取出來,也就是最先取出之前先進棧1的。相當於利用棧2進行乙個倒置。

var stack1 = ;

var stack2 = ;

function push(node)

function pop()

while(stack1.length !== 0)

}return stack2.pop();

}

劍指Offer第三十五題 陣列中的逆序對

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。即輸出p 1000000007 題目保證輸入的陣列中沒有的相同的數字 資料範圍 對於 50的資料,size 10 4 對於 75的...

劍指offer第五題 替換空格

思路應該使用指標從後向前替換字串。不過python用不到。class solution s 源字串 def replacespace self,s write code here new s for j in s if j new s new s 20 else new s new s j retu...

劍指offer第二十五題

題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 思路 1 在原來的鍊錶每個節點後面新增乙個節點,該節點下面連線著原來節點的下乙個...