輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個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 在原來的鍊錶每個節點後面新增乙個節點,該節點下面連線著原來節點的下乙個...