mirror of
https://github.com/krahets/hello-algo.git
synced 2026-06-14 22:26:38 +08:00
fine tune
This commit is contained in:
@@ -139,7 +139,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
count = linear(n);
|
||||
printf("线性阶的操作数量 = %d\n", count);
|
||||
// 分配堆区内存(创建一维可变长数组:数组中元素数量为n,元素类型为int)
|
||||
// 分配堆区内存(创建一维可变长数组:数组中元素数量为 n ,元素类型为 int )
|
||||
int *nums = (int *)malloc(n * sizeof(int));
|
||||
count = arrayTraversal(nums, n);
|
||||
printf("线性阶(遍历数组)的操作数量 = %d\n", count);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
/* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */
|
||||
int *randomNumbers(int n) {
|
||||
// 分配堆区内存(创建一维可变长数组:数组中元素数量为n,元素类型为int)
|
||||
// 分配堆区内存(创建一维可变长数组:数组中元素数量为 n ,元素类型为 int )
|
||||
int *nums = (int *)malloc(n * sizeof(int));
|
||||
// 生成数组 nums = { 1, 2, 3, ..., n }
|
||||
for (int i = 0; i < n; i++) {
|
||||
|
||||
@@ -150,10 +150,10 @@ int main() {
|
||||
|
||||
/* 元素出队 */
|
||||
int popLastNum = popLast(deque);
|
||||
printf("队尾出队元素 = %d,队尾出队后 deque= ", popLastNum);
|
||||
printf("队尾出队元素 = %d ,队尾出队后 deque= ", popLastNum);
|
||||
printArrayDeque(deque);
|
||||
int popFirstNum = popFirst(deque);
|
||||
printf("队首出队元素 = %d,队首出队后 deque= ", popFirstNum);
|
||||
printf("队首出队元素 = %d ,队首出队后 deque= ", popFirstNum);
|
||||
printArrayDeque(deque);
|
||||
|
||||
/* 获取队列的长度 */
|
||||
|
||||
@@ -106,7 +106,7 @@ int main() {
|
||||
|
||||
/* 元素出队 */
|
||||
pop(queue);
|
||||
printf("出队元素 pop = %d,出队后 queue = ", peekNum);
|
||||
printf("出队元素 pop = %d ,出队后 queue = ", peekNum);
|
||||
printArrayQueue(queue);
|
||||
|
||||
/* 获取队列的长度 */
|
||||
|
||||
@@ -85,7 +85,7 @@ int main() {
|
||||
|
||||
/* 元素出栈 */
|
||||
val = pop(stack);
|
||||
printf("出栈元素 pop = %d,出栈后 stack = ", val);
|
||||
printf("出栈元素 pop = %d ,出栈后 stack = ", val);
|
||||
printArray(stack->data, stack->size);
|
||||
|
||||
/* 获取栈的长度 */
|
||||
|
||||
@@ -194,10 +194,10 @@ int main() {
|
||||
|
||||
/* 元素出队 */
|
||||
int popLastNum = popLast(deque);
|
||||
printf("队尾出队元素 popLast = %d,队尾出队后 deque = ", popLastNum);
|
||||
printf("队尾出队元素 popLast = %d ,队尾出队后 deque = ", popLastNum);
|
||||
printLinkedListDeque(deque);
|
||||
int popFirstNum = popFirst(deque);
|
||||
printf("队首出队元素 popFirst = %d,队首出队后 deque = ", popFirstNum);
|
||||
printf("队首出队元素 popFirst = %d ,队首出队后 deque = ", popFirstNum);
|
||||
printLinkedListDeque(deque);
|
||||
|
||||
/* 获取队列的长度 */
|
||||
|
||||
@@ -110,7 +110,7 @@ int main() {
|
||||
|
||||
/* 元素出队 */
|
||||
pop(queue);
|
||||
printf("出队元素 pop = %d,出队后 queue = ", peekNum);
|
||||
printf("出队元素 pop = %d ,出队后 queue = ", peekNum);
|
||||
printLinkedListQueue(queue);
|
||||
|
||||
/* 获取队列的长度 */
|
||||
|
||||
@@ -134,10 +134,10 @@ int main() {
|
||||
// 访问节点
|
||||
int i = 1;
|
||||
int l = left(i), r = right(i), p = parent(i);
|
||||
printf("\n当前节点的索引为 %d,值为 %d\n", i, val(abt, i));
|
||||
printf("其左子节点的索引为 %d,值为 %d\r\n", l, val(abt, l));
|
||||
printf("其右子节点的索引为 %d,值为 %d\r\n", r, val(abt, r));
|
||||
printf("其父节点的索引为 %d,值为 %d\r\n", p, val(abt, p));
|
||||
printf("\n当前节点的索引为 %d ,值为 %d\n", i, val(abt, i));
|
||||
printf("其左子节点的索引为 %d ,值为 %d\r\n", l, val(abt, l));
|
||||
printf("其右子节点的索引为 %d ,值为 %d\r\n", r, val(abt, r));
|
||||
printf("其父节点的索引为 %d ,值为 %d\r\n", p, val(abt, p));
|
||||
|
||||
// 遍历树
|
||||
vector *res = levelOrder(abt);
|
||||
|
||||
@@ -200,7 +200,7 @@ template <typename T> void printDeque(deque<T> deque) {
|
||||
}
|
||||
|
||||
/* Print a HashMap */
|
||||
// 定义模板参数 TKey 和 TValue,用于指定键值对的类型
|
||||
// 定义模板参数 TKey 和 TValue ,用于指定键值对的类型
|
||||
template <typename TKey, typename TValue> void printHashMap(unordered_map<TKey, TValue> map) {
|
||||
for (auto kv : map) {
|
||||
cout << kv.first << " -> " << kv.second << '\n';
|
||||
|
||||
@@ -132,9 +132,9 @@ void main() {
|
||||
|
||||
/* 元素出队 */
|
||||
final int popLast = deque.popLast();
|
||||
print("队尾出队元素 = $popLast,队尾出队后 deque = ${deque.toArray()}");
|
||||
print("队尾出队元素 = $popLast ,队尾出队后 deque = ${deque.toArray()}");
|
||||
final int popFirst = deque.popFirst();
|
||||
print("队首出队元素 = $popFirst,队首出队后 deque = ${deque.toArray()}");
|
||||
print("队首出队元素 = $popFirst ,队首出队后 deque = ${deque.toArray()}");
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
final int size = deque.size();
|
||||
|
||||
@@ -91,7 +91,7 @@ void main() {
|
||||
|
||||
/* 元素出队 */
|
||||
final int pop = queue.pop();
|
||||
print("出队元素 pop = $pop,出队后 queue = ${queue.toArray()}");
|
||||
print("出队元素 pop = $pop ,出队后 queue = ${queue.toArray()}");
|
||||
|
||||
/* 获取队列长度 */
|
||||
final int size = queue.size();
|
||||
|
||||
@@ -65,7 +65,7 @@ void main() {
|
||||
|
||||
/* 元素出栈 */
|
||||
final int pop = stack.pop();
|
||||
print("出栈元素 pop = $pop,出栈后 stack = ${stack.toArray()}");
|
||||
print("出栈元素 pop = $pop ,出栈后 stack = ${stack.toArray()}");
|
||||
|
||||
/* 获取栈的长度 */
|
||||
final int size = stack.size();
|
||||
|
||||
@@ -28,9 +28,9 @@ void main() {
|
||||
|
||||
/* 元素出队 */
|
||||
final int popLast = deque.removeLast();
|
||||
print("队尾出队元素 = $popLast,队尾出队后 deque = $deque");
|
||||
print("队尾出队元素 = $popLast ,队尾出队后 deque = $deque");
|
||||
final int popFirst = deque.removeFirst();
|
||||
print("队首出队元素 = $popFirst,队首出队后 deque = $deque");
|
||||
print("队首出队元素 = $popFirst ,队首出队后 deque = $deque");
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
final int size = deque.length;
|
||||
|
||||
@@ -38,7 +38,7 @@ class LinkedListDeque {
|
||||
void push(int num, bool isFront) {
|
||||
final ListNode node = ListNode(num);
|
||||
if (isEmpty()) {
|
||||
// 若链表为空,则令 _front,_rear 都指向 node
|
||||
// 若链表为空,则令 _front 和 _rear 都指向 node
|
||||
_front = _rear = node;
|
||||
} else if (isFront) {
|
||||
// 队首入队操作
|
||||
@@ -153,9 +153,9 @@ void main() {
|
||||
|
||||
/* 元素出队 */
|
||||
int? popLast = deque.popLast();
|
||||
print("队尾出队元素 = $popLast,队尾出队后 deque = ${deque.toArray()}");
|
||||
print("队尾出队元素 = $popLast ,队尾出队后 deque = ${deque.toArray()}");
|
||||
int? popFirst = deque.popFirst();
|
||||
print("队首出队元素 = $popFirst,队首出队后 deque = ${deque.toArray()}");
|
||||
print("队首出队元素 = $popFirst ,队首出队后 deque = ${deque.toArray()}");
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
int size = deque.size();
|
||||
|
||||
@@ -91,7 +91,7 @@ void main() {
|
||||
|
||||
/* 元素出队 */
|
||||
final int pop = queue.pop();
|
||||
print("出队元素 pop = $pop,出队后 queue = ${queue.toArray()}");
|
||||
print("出队元素 pop = $pop ,出队后 queue = ${queue.toArray()}");
|
||||
|
||||
/* 获取队列的长度 */
|
||||
final int size = queue.size();
|
||||
|
||||
@@ -81,7 +81,7 @@ void main() {
|
||||
|
||||
/* 元素出栈 */
|
||||
final int pop = stack.pop();
|
||||
print("出栈元素 pop = $pop,出栈后 stack = ${stack.toList()}");
|
||||
print("出栈元素 pop = $pop ,出栈后 stack = ${stack.toList()}");
|
||||
|
||||
/* 获取栈的长度 */
|
||||
final int size = stack.size();
|
||||
|
||||
@@ -25,7 +25,7 @@ void main() {
|
||||
|
||||
/* 元素出队 */
|
||||
final int pop = queue.removeFirst();
|
||||
print("出队元素 pop = $pop,出队后 queue = $queue");
|
||||
print("出队元素 pop = $pop ,出队后 queue = $queue");
|
||||
|
||||
/* 获取队列长度 */
|
||||
final int size = queue.length;
|
||||
|
||||
@@ -23,7 +23,7 @@ void main() {
|
||||
|
||||
/* 元素出栈 */
|
||||
final int pop = stack.removeLast();
|
||||
print("出栈元素 pop = $pop,出栈后 stack = $stack");
|
||||
print("出栈元素 pop = $pop ,出栈后 stack = $stack");
|
||||
|
||||
/* 获取栈的长度 */
|
||||
final int size = stack.length;
|
||||
|
||||
@@ -214,5 +214,5 @@ void main() {
|
||||
|
||||
/* 查询节点 */
|
||||
TreeNode? node = avlTree.search(7);
|
||||
print("\n查找到的节点对象为 $node,节点值 = ${node!.val}");
|
||||
print("\n查找到的节点对象为 $node ,节点值 = ${node!.val}");
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ void main() {
|
||||
|
||||
/* 查找节点 */
|
||||
TreeNode? node = bst.search(7);
|
||||
print("\n查找到的节点对象为 $node,节点值 = ${node?.val}");
|
||||
print("\n查找到的节点对象为 $node ,节点值 = ${node?.val}");
|
||||
|
||||
/* 插入节点 */
|
||||
bst.insert(16);
|
||||
|
||||
@@ -8,7 +8,7 @@ const { MaxHeap } = require('./my_heap');
|
||||
|
||||
/* 基于堆查找数组中最大的 k 个元素 */
|
||||
function topKHeap(nums, k) {
|
||||
// 使用大顶堆 MaxHeap,对数组 nums 取相反数
|
||||
// 使用大顶堆 MaxHeap ,对数组 nums 取相反数
|
||||
const invertedNums = nums.map((num) => -num);
|
||||
// 将数组的前 k 个元素入堆
|
||||
const heap = new MaxHeap(invertedNums.slice(0, k));
|
||||
|
||||
@@ -16,7 +16,7 @@ class GraphAdjList:
|
||||
def __init__(self, edges: list[list[Vertex]]):
|
||||
"""构造方法"""
|
||||
# 邻接表,key: 顶点,value:该顶点的所有邻接顶点
|
||||
self.adj_list = dict[Vertex, Vertex]()
|
||||
self.adj_list = dict[Vertex, list[Vertex]]()
|
||||
# 添加所有顶点和边
|
||||
for edge in edges:
|
||||
self.add_vertex(edge[0])
|
||||
|
||||
@@ -92,7 +92,7 @@ class HashMapChaining:
|
||||
|
||||
"""Driver Code"""
|
||||
if __name__ == "__main__":
|
||||
# 测试代码
|
||||
# 初始化哈希表
|
||||
hashmap = HashMapChaining()
|
||||
|
||||
# 添加操作
|
||||
|
||||
@@ -35,7 +35,7 @@ class TreeNode:
|
||||
|
||||
def list_to_tree_dfs(arr: list[int], i: int) -> TreeNode | None:
|
||||
"""将列表反序列化为二叉树:递归"""
|
||||
# 如果索引超出数组长度,或者对应的元素为 None,返回 None
|
||||
# 如果索引超出数组长度,或者对应的元素为 None ,则返回 None
|
||||
if i < 0 or i >= len(arr) or arr[i] is None:
|
||||
return None
|
||||
# 构建当前节点
|
||||
|
||||
Reference in New Issue
Block a user