随笔分类 - LeetCode
摘要:有一个单线程CPU 正在运行一个含有 n 道函数的程序。每道函数都有一个位于 0 和 n-1 之间的唯一标识符 函数调用存储在一个调用栈 上 :当一个函数调用开始时,它的标识符将会推入栈中。而当一个函数调用结束时,它的标识符将会从栈中弹出。标识符位于栈顶的函数是 当前正在执行的函数 。每当一个函数开
阅读全文
posted @ 2022-08-19 00:13
失控D大白兔
摘要:给你一个正整数数组 nums,请你帮忙从该数组中找出能满足下面要求的最长前缀,并返回该前缀的长度 从前缀中恰好删除一个元素后,剩下每个数字的出现次数都相同。 ####1. 双哈希表 一个记录每个值的频数,一个记录每个频数的个数 class Solution { public: int maxEqua
阅读全文
posted @ 2022-08-18 00:34
失控D大白兔
摘要:####1. 最多能完成排序的块I 给定一个长度为 n 的整数数组 arr ,它表示在 [0, n - 1] 范围内的整数的排列。 我们将 arr 分割成若干 块 (即分区),并对每个块单独排序。将它们连接起来后,使得连接的结果和按升序排序后的原数组相同。 返回数组能分成的最多块数量。 //从左往右
阅读全文
posted @ 2022-08-15 06:45
失控D大白兔
摘要:有 n 个人被分成数量未知的组。每个人都被标记为一个从 0 到 n - 1 的唯一ID 。 给定一个整数数组 groupSizes ,其中 groupSizes[i] 是第 i 个人所在的组的大小 例如,如果 groupSizes[1] = 3 ,则第 1 个人必须位于大小为 3 的组中 每个人应该
阅读全文
posted @ 2022-08-12 00:30
失控D大白兔
摘要:####1. 重新格式化字符 给你一个混合了数字和字母的字符串 s,其中的字母均为小写英文字母。 请你将该字符串重新格式化,使得任意两个相邻字符的类型都不同 class Solution { public: string reformat(string s) { int digits=0; for(
阅读全文
posted @ 2022-08-11 20:05
失控D大白兔
摘要:####1. 寻找两个正序数组的中位数 ####2. 两数相除 ####3. 快速幂 ####4. 搜索旋转排序数组 ####5. 数组中的逆序对 ####6. 在排序数组中查找元素的第一个和最后一个位置 class Solution { public: vector<int> searchRang
阅读全文
posted @ 2022-07-30 20:55
失控D大白兔
摘要:给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位上的数字 ####1. 找规律模拟 class Solution { public: int findNthDigit(int n) { long d =
阅读全文
posted @ 2022-07-30 20:53
失控D大白兔
摘要:给定一个由不同正整数的组成的非空数组 nums ,考虑下面的图: 有 nums.length 个节点,按从 nums[0] 到 nums[nums.length - 1] 标记 只有当 nums[i] 和 nums[j] 共用一个大于 1 的公因数时,nums[i] 和 nums[j]之间才有一条边
阅读全文
posted @ 2022-07-30 15:19
失控D大白兔
摘要:给定一个正整数 n ,输出外观数列的第 n 项 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述 ####1. 递归 判断相邻相等的方法每次只能处理上一个值 等价于每次比较上一个组的末位置与当前组的初始位置 最后一个值要额外处理 class Solution { pub
阅读全文
posted @ 2022-07-27 20:23
失控D大白兔
摘要:####1. 基本计算器 ####2. 串的模拟操作 ####3. 字符串相乘 ####4. 旋转图像 ####5. 螺旋矩阵 ####6. 矩阵置零 ####7. 搜索二维矩阵 ####8. 对角线遍历 ####9. 复写零 ####10. 二维网格迁移
阅读全文
posted @ 2022-07-27 20:08
失控D大白兔
摘要:####1. 基本计算器 实现加减和括号优先级,忽视空格 class Solution { public: int calculate(string s) { stack<int> ops;//栈存储上一层 ops.push(1); int sign = 1; int ret = 0; int n
阅读全文
posted @ 2022-07-27 20:07
失控D大白兔
摘要:给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素 ####1. 模拟操作(贪吃蛇不断更改方向) class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) {
阅读全文
posted @ 2022-07-27 19:48
失控D大白兔
摘要:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 ####1. O(m+n)辅助空间 基本操作,用两个数组存储对应行和列是否要置零 class Solution { public: void setZeroes(vector<vector<int>>& mat
阅读全文
posted @ 2022-07-27 18:32
失控D大白兔
摘要:给你一个 m 行 n 列的二维网格 grid 和一个整数 k,你需要将 grid 迁移 k 次 ####1. 直接映射 class Solution { public: vector<vector<int>> shiftGrid(vector<vector<int>>& grid, int k) {
阅读全文
posted @ 2022-07-27 17:42
失控D大白兔
摘要:给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素 ####1. 模拟操作 按照对角线扫描的顺序,首先要清楚得遍历m+n-1趟 对于对角线移动操作,往上扫描时横坐标增,纵坐标减,往下扫描时,横坐标减,纵坐标增 每扫描完一趟,横纵坐标有一个变化 向上
阅读全文
posted @ 2022-07-27 17:22
失控D大白兔
摘要:####1. 深度优先 class Solution { public: int countNodes(TreeNode* root) { if(!root) return 0; return 1+countNodes(root->left)+countNodes(root->right); } }
阅读全文
posted @ 2022-07-25 23:15
失控D大白兔
摘要:####1. 二叉树的层平均值 class Solution { public: vector<double> averageOfLevels(TreeNode* root) { auto averages = vector<double>(); auto q = queue<TreeNode*>(
阅读全文
posted @ 2022-07-25 21:27
失控D大白兔
摘要:####1. 树中是否存在根节点到叶子节点的路径 class Solution { public: bool hasPathSum(TreeNode *root, int sum) { if (root == nullptr) { return false; } if (root->left ==
阅读全文
posted @ 2022-07-25 21:19
失控D大白兔
摘要:####1. 合并两个有序链表 class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* preHead = new ListNode(-1); //一定要使用头指针并复制一个副本
阅读全文
posted @ 2022-07-25 17:29
失控D大白兔
摘要:####1. 反转指定区间链表 先记录反转区域的前驱节点 之后再将反转区域节点按头插法插到该前驱节点 最后再连接一下反转区域后面的节点 class Solution { public: ListNode* reverseBetween(ListNode* head, int left, int ri
阅读全文
posted @ 2022-07-25 14:57
失控D大白兔