摘要:
Top100(中) 二叉树 94. 二叉树的中序遍历 int *res; void inorder(struct TreeNode *root, int *returnSize) { if (root == NULL) return; // 左根右 inorder(root->left, retur 阅读全文
摘要:
链表中等题(下) LCR 028. 扁平化多级双向链表 class Solution { public: // 递归 Node *generate(Node *head) { if (head == nullptr) return nullptr; // 把后面的扁平化 Node *next = g 阅读全文
摘要:
Top100(上) 散列 1. 两数之和 struct MyListNode { int val; int pos; struct MyListNode *next; }; // 散列表 typedef struct { struct MyListNode *data; } MyHashMap; c 阅读全文
摘要:
链表中等题(上) 2807. 在链表中插入最大公约数 // 辗转相除 int gcd(int a, int b) { if (a % b == 0) return b; return gcd(b, a % b); } struct ListNode *insertGreatestCommonDivi 阅读全文
摘要:
前缀和简单题 2574. 左右元素和的差值 int *leftRightDifference(int *nums, int numsSize, int *returnSize) { int *res = (int *) malloc(sizeof(int) * numsSize); *returnS 阅读全文
摘要:
二分法 222. 完全二叉树的节点个数 /* * 完全二叉树编号从1开始 * 如果第k个节点位于第h层,则k的二进制表示包含h+1位, * 其中最高位是1,其余各位从高到低表示从根节点到第k个节点的路径, * 0表示移动到左子节点,1表示移动到右子节点。 * 通过位运算得到第k个节点对应的路径,判断 阅读全文
摘要:
二叉树遍历 先序 递归 int *res; void preorder(struct TreeNode *root, int *returnSize) { if (root == NULL) return; // 根左右 res[(*returnSize)++] = root->val; preor 阅读全文
摘要:
二叉树简单题 2331. 计算布尔二叉树的值 bool evaluateTree(struct TreeNode *root) { // 递归出口 if (root == NULL) return root; if (root->left == NULL && root->right == NULL 阅读全文
摘要:
哈希表 705. 设计哈希集合 // 拉链法 struct ListNode { int val; struct ListNode *next; }; typedef struct { struct ListNode *data; } MyHashSet; // 模 const int hashSi 阅读全文
摘要:
算法笔记 散列 字符串散列 // 把字符串当成26进制数,转换成10进制,建立映射关系 int hash(char S[], int len) { int res = 0; for (int i = 0; i < len; ++i) { res = res * 26 + (S[i] - 'A'); 阅读全文