當前位置:
首頁 >
剑指offer 算法 (代码的鲁棒性)
發布時間:2025/10/17
28
豆豆
生活随笔
收集整理的這篇文章主要介紹了
剑指offer 算法 (代码的鲁棒性)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
輸入兩個單調遞增的鏈表,輸出兩個鏈表合成后的鏈表,當然我們需要合成后的鏈表滿足單調不減規則。
題目描述
輸入兩顆二叉樹A,B,判斷B是不是A的子結構。
/* struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {} };*/ class Solution { public:bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){bool result = false;if( pRoot1 != NULL && pRoot2 != NULL ){if( pRoot1->val == pRoot2->val )result = DoesRootHaveSameLeaves(pRoot1,pRoot2);if( !result )result = HasSubtree(pRoot1->left,pRoot2);if( !result )result = HasSubtree(pRoot1->right,pRoot2);}return result;}bool DoesRootHaveSameLeaves(TreeNode* pRoot1, TreeNode* pRoot2){if( pRoot2 == NULL )return true;if( pRoot1 == NULL )return false;if( pRoot1->val != pRoot2->val )return false;return DoesRootHaveSameLeaves(pRoot1->left,pRoot2->left) && DoesRootHaveSameLeaves(pRoot1->right,pRoot2->right);} };
輸入一個鏈表,輸出該鏈表中倒數第k個結點。
解析:p1,p2保持k-1的距離,當p1指向鏈表尾時,p2正好指向倒數第k個結點
題目描述
輸入一個鏈表,反轉鏈表后,輸出鏈表的所有元素。
解析:curNode保存當前結點,preNode保存已遍歷過的反轉好的鏈表的頭結點,newList作最后反轉好的鏈表頭。當curNode不是指向鏈表尾時,先保存鏈表nextNode值,使curNode->next指向preNode,preNode再保存curNode,最后恢復curNode為nextNode。直到curNode指向鏈表尾,即nextNode為空時,newList=curNode。結束~~
輸入兩個單調遞增的鏈表,輸出兩個鏈表合成后的鏈表,當然我們需要合成后的鏈表滿足單調不減規則。
解析:比較pHead1和pHead2的較小值賦給當前結點,遞歸比較下一個較小值賦予下一個結點,直到某一鏈表為空
題目描述
輸入兩顆二叉樹A,B,判斷B是不是A的子結構。
/* struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {} };*/ class Solution { public:bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){bool result = false;if( pRoot1 != NULL && pRoot2 != NULL ){if( pRoot1->val == pRoot2->val )result = DoesRootHaveSameLeaves(pRoot1,pRoot2);if( !result )result = HasSubtree(pRoot1->left,pRoot2);if( !result )result = HasSubtree(pRoot1->right,pRoot2);}return result;}bool DoesRootHaveSameLeaves(TreeNode* pRoot1, TreeNode* pRoot2){if( pRoot2 == NULL )return true;if( pRoot1 == NULL )return false;if( pRoot1->val != pRoot2->val )return false;return DoesRootHaveSameLeaves(pRoot1->left,pRoot2->left) && DoesRootHaveSameLeaves(pRoot1->right,pRoot2->right);} };
總結
以上是生活随笔為你收集整理的剑指offer 算法 (代码的鲁棒性)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指offer 算法 (代码的完整性)
- 下一篇: 剑指offer 算法 (画图让抽象问题形