劍指offer-演算法題練習:part4 重建二叉樹
時間限制:1秒空間限制:32768k
題目描述
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
/**
* definition for binary tree
* struct treenode
* };
*/class solution
treenode *root = new treenode(pre[0]);
// 處理中序遍歷的vector
vector::const_iterator itr = find(in.cbegin(), in.cend(), pre[0]);
vectorleftin(in.cbegin(), itr);
vectorrightin(itr + 1, in.cend());
// 處理前序遍歷的vector
int leftpresize = leftin.size();
vectorleftpre(pre.cbegin() + 1, pre.cbegin() + leftpresize + 1);
vectorrightpre(pre.cbegin() + leftpresize + 1, pre.cend());
// 遞迴
root->left = reconstructbinarytree(leftpre, leftin);
root->right = reconstructbinarytree(rightpre, rightin);
return root;
}};
劍指offer面試演算法題
1.長度為n的陣列裡面的元素都在0 n 1之間,找出第乙個重複的數字 思路 從頭到尾依次遍歷,如果當前的值a i i,如果a i a a i 那麼需要把a a i 位置上的值與a i 作交換 把對的值放在對的位置 之後繼續判斷此時的a i 位置沒有移動 如果a i a a i 證明對的位置上有對的元...
劍指offer練習(一)
寫在前面 純粹開個部落格督促自己刷題而已,只是把每個題的相對較好的解法蒐集過來,以便自己以後好找而已,以後也會不時寫一些跟產品經理學習有關的東西,理由同上,希望自己能堅持下去。解法 首先遍歷原字串,找出字串的長度以及其中的空格數量,根據原字串的長度和空格的數量我們可以求出最後新字串的長度。設定兩個指...
劍指offer陣列練習
1.面試題第56題 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。1 最初的思路 將陣列中的第乙個數字與其他的數字進行對比,如果有與它相同的就將第二個數字與其他數字對比,依次下去。問題 會發現時間複雜度過高。真正寫 時會根據題目的特徵加一些判斷,來減小比...