面試題6:從尾到頭列印鍊錶
/**
* struct listnode
* };
*/class
solution
reverse
(res.
begin()
, res.
end())
;return res;}}
;
替換空格class
solution
int newnumstr = numstr + numspace *2;
if(newnumstr > length)
return
;while
(numstr >=
0&& newnumstr > numstr)
else str[newnumstr--
]= str[numstr]
; numstr--;}
}};
重建二叉樹/**
* definition for binary tree
* struct treenode
* };
*/class
solution
vector<
int> preleft, preright, vinleft, vinright;
for(
int i =
0; i < rootindex;
++i)
for(
int j = rootindex+
1; j < pre.
size()
;++j)
treenode *head =
newtreenode
(rootval)
; head-
>left =
reconstructbinarytree
(preleft, vinleft)
; head-
>right =
reconstructbinarytree
(preright, vinright)
;return head;}}
;
旋轉陣列的最小數字class
solution
return rotatearray[lo];}
};
調整陣列順序使奇數字於偶數前面
穩定的寫法如下:
class
solution
for(
int i =
0; i <= n;
++i)}}
;
注意 c++ 是不支援 -1 這種索引的。
鍊錶中倒數第k個結點
這道題本身不難,但是要注意三個 edge case,否則無法通過 oj:
/*
struct listnode
};*/
class
solution
while
(fast)
return slow;}}
;
樹的子結構
見
/*
struct treenode
};*/
class
solution
return res;
}bool
helper
(treenode *a, treenode *b)
};
二叉樹的映象/*
struct treenode
};*/
class
solution}}
};
順時針列印矩陣
解題思路參見:
**就看下邊這個就可以。
class
solution
return res;}}
;
棧的壓入、彈出序列class
solution
}return i == popv.
size()
;}};
劍指offer刷題
原題鏈結 動態規劃 class solution dp for int i 1 i len1 i else if p j 1 else return dp len1 len2 原題鏈結 數學推導 找規律 class solution else if n 3 2 return ipow 3 numso...
劍指offer刷題 2
思路 如果從前往後進行遍歷,那麼每次找到乙個空格,則需要新增兩個位元組來進行替換,我們採用先對字串進行遍歷,查詢字串中的空格的個數,然後對新的字串進行長度的計算,然後從後往前進行替換,每遇到乙個空字元,然後進行替換。class solution int oldnumber 0 int numbers...
劍指offer刷題筆記
給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如,5 3 7 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。struct treenode class solution treenode kthnode treenode proot,int k 非遞迴實現 class solution...