
LeetCode
文章平均质量分 73
剑指offer等题
MINGgoS
这个作者很懒,什么都没留下…
展开
-
LeetCode 41 ~ 50
41. 缺失的第一个正数 桶排序: 若数字不为INT_MIN,则将该数字自减一次 使用桶排序,将每个数字放到对应索引的位置上 最后遍历一遍数组,若nums[i] != i,则返回i + 1 时间复杂度为O(n)O(n)O(n),不使用额外空间,空间复杂度为O(1)O(1)O(1) class Solution { public: int firstMissingPositive(vector<int>& nums) { int n = nums.size();原创 2022-02-10 15:06:12 · 283 阅读 · 0 评论 -
LeetCode 31 ~ 40
Gamma公式展示 Γ(n)=(n−1)!∀n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n−1)!∀n∈N 是通过 Euler integral Γ(z)=∫0∞tz−1e−tdt . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.原创 2022-01-21 20:23:03 · 647 阅读 · 0 评论 -
LeetCode 61 ~ 70
LeetCode 61. 旋转链表 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) :原创 2021-10-23 16:01:19 · 126 阅读 · 0 评论 -
LeetCode 51 ~ 60
LeetCode 51. N 皇后 因为每行每列每条对角线都只能有一个皇后,所以可以将各行的皇后映射到同一列上,枚举每列每条对角线是否有皇后。 接着分析,对角线上的皇后。 皇后坐标为(i,j) 正对角线映射到一个数组dg中,由于此时i = j + c1的c1可能为负数,所以需要加上一个偏移量保证c1为正数,用dg[i - j + n] 记录这条正对角线 反对角线映射到一个数组udg,此时i = - j + c2 ,c2必定为正数,用udg[ i + j ]记录这条反对角线 在回溯的过程中只要满足!col[原创 2021-10-20 15:46:54 · 339 阅读 · 0 评论 -
LeetCode 50. Pow(x, n)
50. Pow(x, n) 比较典型的一道快速幂题目,可以使用位运算实现,也可以使用递归的做法实现,这里采用位运算的实现方式 class Solution { public: double myPow(double x, int n) { //long long类型方便计算 typedef long long LL; //记录指数幂是否为负数 bool is_minus = n < 0; //res原创 2021-10-19 14:26:45 · 99 阅读 · 0 评论 -
LeetCode 21 ~ 30
LeetCode 21. 合并两个有序链表 新建头部的保护结点 dummy,设置 cur 指针指向dummy。 若当前 l1 指针指向的结点的值 val比l2指针指向的结点的值val,则令 cur 的next 指针指向l1,且 l1后移;否则指向 l2,且l2 后移。 然后cur指针按照上一部设置好的位置后移。 循环以上步骤直到l1 或l2 为空。 将剩余的l1或l2接到cur指针后边。 /** * Definition for singly-linked list. * struct ListNo原创 2021-10-23 00:00:55 · 142 阅读 · 0 评论 -
LeetCode 11 ~ 20
LeetCode 11. 盛最多水的容器 双指针算法。 if(a[i] > a[j]) j -- else i ++ 这一步为本题的核心,接着迭代更新最大值即可 class Solution { public: int maxArea(vector<int>& height) { int res = 0; for(int i = 0, j = height.size() - 1; i < j;) { res =原创 2021-10-20 09:25:25 · 105 阅读 · 0 评论 -
LeetCode 1 ~ 10
LeetCode 1. 两数之和 使用哈希表记录每个遍历过的数和对应的位置,使用目标值减去当前遍历到的数值得到想要的值r,如果哈希表中已经存在这个值r,那么就返回r对应的下表和当前遍历到的值得下标。 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> hash; for(int原创 2021-10-19 14:34:17 · 134 阅读 · 0 评论