目錄
調整陣列順序使奇數字於偶數前面
題目:題解:
完整**:
鍊錶中倒數第k個節點
題目:題解:
完整**:
反轉鍊錶
題目:題解:
完整**:
合併兩個排序的鍊錶
題目:題解:
完整**:
樹的子結構
題目:題解:
完整**:
二叉樹的映象
題目:輸入描述:
題解:完整**:
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。雙指標
class solution
array[i] = tmp;
i++;}}
}};
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。方法一:普通解法說明:本題目包含複雜資料結構listnode,點此檢視相關資訊
方法二:快慢指標
/*
struct listnode
};*/
class solution
int n = 0;
listnode* cur = plisthead;
while(cur != nullptr)
k = n - k;
while(k > 0 && plisthead != nullptr)
return plisthead;
*/// 方法二:快慢指標
if(k <= 0 || plisthead == nullptr)
listnode* fast = plisthead;
listnode* slow = plisthead;
while(k--) else
}while(fast)
return slow;
}};
輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。雙指標說明:本題目包含複雜資料結構listnode,點此檢視相關資訊
/*
struct listnode
};*/
class solution
return newnode;
}};
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。合併說明:本題目包含複雜資料結構listnode,點此檢視相關資訊
/*
struct listnode
};*/
class solution
if(phead2 == nullptr)
listnode *dummy = new listnode(0);
listnode *first = dummy;
while(phead1 != nullptr && phead2 != nullptr) else
}while(phead1 != nullptr)
while(phead2 != nullptr)
return dummy->next;
}};
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)遞迴說明:本題目包含複雜資料結構treenode,點此檢視相關資訊
/*
struct treenode
};*/
class solution
return dfs(proot1, proot2) || hassubtree(proot1->left, proot2) ||
hassubtree(proot1->right, proot2);
}bool dfs(treenode* proot1, treenode* proot2)
if(proot1 == nullptr)
return (proot1->val == proot2->val) && dfs(proot1->left, proot2->left) &&
dfs(proot1->right, proot2->right);
}};
操作給定的二叉樹,將其變換為源二叉樹的映象。遞迴說明:本題目包含複雜資料結構treenode,點此檢視相關資訊二叉樹的映象定義:源二叉樹
8/ \
6 10
/ \ / \
5 7 9 11
映象二叉樹
8/ \
10 6
/ \ / \
11 9 7 5
/*
struct treenode
};*/
class solution
treenode *node = proot->left;
proot->left = proot->right;
proot->right = node;
mirror(proot->left);
mirror(proot->right);
}};
劍指offer C 刷題總結(1)
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。雙指標 class solution int n array 0 size int l 0 int r n 1...
劍指offer C 刷題總結(2)
目錄 用兩個棧實現佇列 題目 題解 完整 旋轉陣列最小的數字 題目 題解 完整 斐波那契數列 題目 題解 完整 跳台階題目 題解 完整 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。當發生push和pop操作時,對兩個棧實現一次資料置換操作,實現佇列的先進先出。c...
劍指offer C 一天一題 4
今日碎碎念 事情永遠幹不完啊 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。解題思路 前序的第乙個數是節點 中序找到節點位置,節點左為左樹,右為右樹 遞迴 實現 def...