每日做題之劍指offer(四)

2021-08-22 17:48:38 字數 2974 閱讀 6242

時間限制:1秒 空間限制:32768k 熱度指數:177188

本題知識點: 棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式(時間複雜度應為o(1))。

解題思路:

class solution 

void pop()

}int top()

int min()

private:

stackstackdata;

stackstackmin;

};

時間限制:1秒 空間限制:32768k 熱度指數:212288

本題知識點: 棧

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)

解題思路:

總結:

class solution 

};*/

class solution

while(!tree_queue.empty())

if(tree_queue.front()->right != null)

result.push_back(tree_queue.front()->val);

tree_queue.pop();

}return result;}};

時間限制:1秒 空間限制:32768k 熱度指數:250141

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。

解題思路:

class solution 

//找右子樹,大於根節點,有小於根節點的那麼false

int j=i;

vectorsequenceright;

for(;j0)

left=verifysquenceofbst(sequenceleft);

bool right=true;

if(i解題思路

# 返回二維列表,內部每個列表表示找到的路徑

def findpath(self, root, expectnumber):

# write code here

if not root:

return

if root and not root.left and not root.right and root.val == expectnumber:

return [[root.val]]

result =

left = self.findpath(root.left, expectnumber-root.val)

right = self.findpath(root.right, expectnumber-root.val)

for i in left + right:

return result

時間限制:1秒 空間限制:32768k 熱度指數:221374

本題知識點: 鍊錶

輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)

/*

struct randomlistnode

};*/

class solution

}//2. 如果原始鍊錶上的節點n的random指向s,則對應的複製節點n'的random指向s的下乙個節點s'

void connectrandomnodes(randomlistnode* phead)

}//3. 把得到的鍊錶拆成兩個鍊錶,奇數字置上的結點組成原始鍊錶,偶數字置上的結點組成複製出來的鍊錶

randomlistnode* reconnectnodes(randomlistnode* phead)

//迴圈

while(pnode!=null)

return pclonedhead;

}//4. 三步合一

randomlistnode* clone(randomlistnode* phead)

};

每日做題之劍指offer(五)

時間限制 1秒 空間限制 32768k 熱度指數 156582 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。解題思路 struct treenode class solution return prootoftree void h...

出鞘之劍指offer 第14題 剪繩子

給你一根長度為n的繩子,請把繩子剪成m段 m和n都是整數,n 1並且m 1 每段繩子的長度記為k 0 k 1 k m 請問k 0 k 1 k m 可能的最大乘積是多少?使用動態規劃。package offer.xzs.fourteenth public class demo01 public sta...

CPP之劍指 Offer 66 構建乘積陣列

給定乙個陣列 a 0,1,n 1 請構建乙個陣列b 0,1,n 1 其中 b 中的元素 b i a 0 a 1 a i 1 a i 1 a n 1 不能使用除法。根據題目描述,函式名是constructarr,函式輸入是vector a,返回值應當是新的陣列 vector ret。陣列a中的元素對應...