freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

程序員面試100題-文庫(kù)吧資料

2025-08-06 09:03本頁(yè)面
  

【正文】 *pEnd。 參考代碼: /////////////////////////////////////////////////////////////////////// // Reverse a string between two pointers // Input: pBegin the begin pointer in a string // pEnd the end pointer in a string /////////////////////////////////////////////////////////////////////// void Reverse(char *pBegin, char *pEnd) { if(pBegin == NULL || pEnd == NULL) return。 還是以上面的輸入為例子。我們?cè)兕嵉姑總€(gè)單詞內(nèi)的字符。 由于本題需要翻轉(zhuǎn)句子,我們先顛倒句子中的所有字符。 分析:由于編寫字符串相關(guān)代碼能夠反映程序員的編程能力和編程習(xí)慣,與字符串相關(guān)的問(wèn)題一直是程序員筆試、面試題的熱門題目。為簡(jiǎn)單起見(jiàn),標(biāo)點(diǎn)符號(hào)和普通字母一樣處理。 } 14 (07)-翻轉(zhuǎn)句子中單詞的順序 題目:輸入一個(gè)英文句子,翻轉(zhuǎn)句子中單詞 的順序,但單詞內(nèi)字符的順序不變。amp。 if(i length 1) right = verifySquenceOfBST(squence + i, length i 1)。 if(i 0) left = verifySquenceOfBST(squence, i)。 ++ j) { if(squence[j] root) return false。 for(。 ++ i) { if(squence[i] root) break。 for(。 // root of a BST is at the end of post order traversal squence int root = squence[length 1]。 參考代碼: using namespace std。從頭開(kāi)始掃描這個(gè)序列,比根結(jié)點(diǎn)小的元素都應(yīng)該位于序列的左半部分;從第一個(gè)大于跟結(jié)點(diǎn)開(kāi)始到跟結(jié)點(diǎn)前面的一個(gè)元素為止,所有元素都應(yīng)該大于跟結(jié)點(diǎn),因?yàn)檫@部分元素對(duì)應(yīng)的是樹(shù)的右子樹(shù)。 分析:這是一道 trilogy 的筆試題,主要考查對(duì)二元查找樹(shù)的理解。 例如輸入 1 8,由于這一整數(shù)序列是如下樹(shù)的后序遍歷結(jié)果: 8 / \ 6 10 / \ / \ 5 7 9 11 因此返回 true。 } } } } (06)判斷整數(shù)序列是不是二元查找樹(shù)的后序遍歷結(jié)果 題目:輸入一個(gè)整數(shù)數(shù)組,判斷該數(shù)組是不是某二元查找樹(shù)的后序遍歷的結(jié)果。 // if is less than the previous greatest number if(*iter *(())) { // replace the previous greatest number (iterFirst)。 // leastNumbers contains k numbers and it39。 iter != ()。 vectorint::const_iterator iter = ()。 leastNumbers, // k least numbers, output unsigned int k ) { ()。 /////////////////////////////////////////////////////////////////////// // find k least numbers in a vector /////////////////////////////////////////////////////////////////////// void FindKLeastNumbers ( const vectorintamp。既偷了懶,又給面試官留下熟悉 STL 的好印象,何樂(lè)而不為之? 參考代碼: include set include vector include iostream using namespace std。我們現(xiàn)在不需要重新去發(fā)明車輪,因?yàn)榍叭嗽缇桶l(fā)明出來(lái)了。因此我們可以用堆( heap)來(lái)代替數(shù)組。從上面的分析,當(dāng)長(zhǎng)度為 k 的數(shù)組已經(jīng)滿了之后,如果需要替換,每次替換的都是數(shù)組中的最大值。 這是我能夠想出來(lái)的最快的解決方案。這種思路相當(dāng)于只要排序 k 個(gè)整數(shù),因此時(shí)間復(fù)雜可以降到 O(n+nlogk)。否則長(zhǎng)度為 k 的數(shù)組已經(jīng)滿了,不能再往數(shù)組里插入元素,只能替換了。每次從輸入的 n 個(gè)整數(shù)中讀入一個(gè)數(shù)。我們?cè)囍鴮ふ腋斓慕鉀Q思路。 分析:這道題最簡(jiǎn)單的思路莫過(guò)于把輸入的 n 個(gè)整數(shù)排序,這樣排在最前面的 k 個(gè)數(shù)就是最小的 k 個(gè)數(shù)。 } (05)查找最小的 k個(gè)元素 題目:輸入 n 個(gè)整數(shù),輸出其中最小的 k 個(gè)。s value from the current sum currentSum = pTreeNodem_nValue。 if(pTreeNodem_pRight) FindPath(pTreeNodem_pRight, expectedSum, path, currentSum)。 std::coutstd::endl。 ++ iter) std::cout*iter39。 for(。amp。 !pTreeNodem_pRight)。 // if the node is a leaf, and the sum is same as predefined, // the path is what we want. print the path bool isLeaf = (!pTreeNodem_pLeft amp。 10 currentSum += pTreeNodem_nValue。path, // a pathfrom root to current node intamp。我們不難看出保存路徑的數(shù)據(jù)結(jié)構(gòu)實(shí)際上是一個(gè)棧結(jié)構(gòu),因?yàn)槁窂揭c遞歸調(diào)用狀態(tài)一致,而遞歸調(diào)用本質(zhì)就是一個(gè)壓棧和出棧的過(guò)程。當(dāng)前結(jié)點(diǎn)訪問(wèn)結(jié)束后,遞歸函數(shù)將自動(dòng)回到父結(jié)點(diǎn)。如果當(dāng)前結(jié)點(diǎn)為葉結(jié)點(diǎn)并且當(dāng)前路徑的和剛好等于輸入的整數(shù),則當(dāng)前的路徑符合要求,我們把它打印出來(lái)。 分析:這是百度的一道筆試題,考查對(duì)樹(shù)這種基本數(shù)據(jù)結(jié)構(gòu)以及遞歸函數(shù)的理解。 // left child of node BinaryTreeNode *m_pRight。 二元樹(shù)結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)定義為: struct BinaryTreeNode // a node in the binary tree { int m_nValue。打印出和與輸入整數(shù)相等的所有路徑。 9 (04)-在二元樹(shù)中找出和為某一值的所有路徑 題目:輸入一個(gè)整數(shù)和一棵二元樹(shù)。 ? 輸入有一類特殊情況需要特殊處理。 } 討論:上述代碼中有兩點(diǎn)值得和大家討論一下: ? 函數(shù)的返回值不是子數(shù)組和的最大值,而是一個(gè)判斷輸入是否有效的標(biāo)志。 ++i) { if(pData[i] nGreatestSum) nGreatestSum = pData[i]。 for(unsigned int i = 1。 // if a greater sum is found, update the greatest sum if(nCurSum nGreatestSum) nGreatestSum = nCurSum。 ++i) { nCurSum += pData[i]。 for(unsigned int i = 0。nGreatestSum // the greatest sum of all subarrays ) { // if the input is invalid, return false if((pData == NULL) || (nLength == 0)) return false?;谶@樣的思路,我們可以寫出如下代碼。 很容易理解,當(dāng)我們加上一個(gè)正數(shù)時(shí),和會(huì)增加;當(dāng)我們加上一個(gè)負(fù)數(shù)時(shí),和會(huì)減少。不過(guò)非常遺憾的是,由于長(zhǎng)度為 n 的數(shù)組有 O(n2)個(gè)子數(shù)組;而且求一個(gè)長(zhǎng)度為 n 的數(shù)組的和的時(shí)間復(fù)雜度為O(n)。由于本題在網(wǎng)絡(luò)中廣為流傳,本題也順利成為 2020 年程序員面試題中經(jīng)典中的經(jīng)典。 例如輸入的數(shù)組為 1, 2, 3, 10, 4, 7, 2, 5,和最大的子數(shù)組為 3, 10, 4, 7, 2,因此輸出為該子數(shù)組的和 18。求所有子數(shù)組的和的最大值。 (03)-求子數(shù)組的最大和 題目:輸入一個(gè)整形數(shù)組,數(shù)組里有正數(shù)也有負(fù)數(shù)。注釋既能提高代碼的可讀性,又能增加代碼量,何樂(lè)而不為? 總之,在面試時(shí)如果時(shí)間允許,盡量把代碼寫的漂亮一些。在很多類中,都需要提供 const 和非 const版本的成員訪問(wèn)函數(shù); ? min 函數(shù)中 assert。比如我在上面的代碼中做了如下的工作: ? 用模板類實(shí)現(xiàn)。 } 舉個(gè)例子演示上述代碼的運(yùn)行過(guò)程: 步驟 數(shù)據(jù)棧 輔助棧 最小值 3 3 0 3 4 3,4 0,0 3 2 3,4,2 0,0,2 2 7 1 3,4,2,1 0,0,2,3 1 3,4,2 0,0,2 2 3,4 0,0 3 0 3,4,0 0,0,2 0 討論:如果思路正確,編寫上述代碼不是一件很難的事情。 assert(() 0)。 } // get the minimum element of stack template typename T const Tamp。 } } // erease the element at the end of stack template typename T void CStackWithMinT::pop() { // pop m_data ()。 else { if(value m_data[()]) (() 1)。 value) { // append the data into the end of m_data (value)。 CStackWithMinT::top() const { return ()。 CStackWithMinT::top() { return ()。// the indicesof minimum elements }。 private: Tm_data。 const Tamp。 value)。 top(void) const。 top(void)??紤]到棧元素的類型可能是復(fù)雜的數(shù)據(jù)結(jié)構(gòu),用最小元素的位置將能減少空間消耗) push到輔助棧中;每次 pop 一個(gè)元素出棧的時(shí)候,同時(shí) pop 輔助棧。我們需要一個(gè)輔助棧。 乍一看這樣思路挺好的。 在棧里添加一個(gè)成員變量存放最小元素(或最小元素的位置)。這 5 樣棧頂元素將是最小元素。 分析:這是去年 google 的一道面試題。 } (02)設(shè)計(jì)包含 min函數(shù) 的棧 題目:定義棧的數(shù)據(jù)結(jié)構(gòu),要求添加一個(gè) min 函數(shù),能夠得到棧的最小元素。 pHeadOfListm_pLeft) pHeadOfList = pHeadOfListm_pLeft。 while(pHeadOfList amp。 ConvertNode(pHeadOfTree, pLastNodeInList)。 // Convert the right subtree if (pCurrentm_pRight != NULL) ConvertNode(pCurrentm_pRight, pLastNodeInList)。 if(pLastNodeInList != NULL) pLastNodeInListm_pRight = pCurrent。
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1