
leedcode
文章平均质量分 62
ashorezzy
每天随便学一点儿
展开
-
力扣数据结构(STL)
Sequence Containers:维持顺序的容器。(a). vector:动态数组,是我们最常使用的数据结构之一,用于 O(1) 的随机读取。因为大部分算法的时间复杂度都会大于 O(n),因此我们经常新建 vector 来存储各种数据或中间变量。因为在尾部增删的复杂度是 O(1),我们也可以把它当作 stack 来用。(b). list:双向链表,也可以当作 stack 和 queue 来使用。由于 LeetCode 的题目多用 Node 来表示链表,且链表不支持快速随机读取,因此我们很少用到这.原创 2021-12-10 17:57:48 · 1070 阅读 · 0 评论 -
力扣位运算
x ^ 0s = xx ^ x = 0n & (n - 1) 可以去除 n 的位级表示中最低的那一位,例如对于二进制表示 11110100,减去 1 得到 11110011,这两个数按位与得到 11110000。n & (-n) 可以得到 n 的位级表示中最低的那一位,例如对于二进制表示 11110100,取负得到 00001100,这两个数按位与得到 00000100。给定两个十进制数字,求它们二进制表示的汉明距离(Hamming distance,即不同位的个数)。对两个数进行按原创 2021-11-17 23:07:36 · 206 阅读 · 0 评论 -
力扣dfs
DFS(深度优先搜索)深度优先搜索也可以用来检测环路:记录每个遍历过的节点的父节点,若一个节点被再次遍历且父节点不同,则说明有环。我们也可以用之后会讲到的拓扑排序判断是否有环路,若最后存在入度不为零的点,则说明有环。有时我们可能会需要对已经搜索过的节点进行标记,以防止在遍历时重复搜索某个节点,这种做法叫做状态记录或记忆化(memoization)。给定一个二维的 0-1 矩阵,其中 0 表示海洋,1 表示陆地。单独的或相邻的陆地可以形成岛屿,每个格子只与其上下左右四个格子相邻。求最大的岛屿面积。In原创 2021-11-15 20:13:11 · 792 阅读 · 0 评论 -
归并排序+快排+快速选择+桶排序
https://www.bilibili.com/video/BV1Pt4y197VZ/?spm_id_from=333.788.recommend_more_video.-1原创 2021-11-07 10:23:18 · 221 阅读 · 0 评论 -
力扣二分查找(搞不懂)
二分查找也常被称为二分法或者折半查找,每次查找时通过将待查找区间分成两部分并只取一部分继续查找,将查找的复杂度大大减少。对于一个长度为 O(n) 的数组,二分查找的时间复杂度为 O(log n)。二分查找也可以看作双指针的一种特殊情况,但我们一般会将二者区分。双指针类型的题,指针通常是一步一步移动的,而在二分查找里,指针每次移动半个区间长度。求开方给定一个非负整数,求它的开方,向下取整输入一个整数,输出一个整数我们可以把这道题想象成,给定一个非负整数 a,求 f (x) = x2 − a = 0原创 2021-11-04 08:01:39 · 107 阅读 · 0 评论 -
力扣玩转双指针
双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是排好序的int x;int * p1 = &x; // 指针可以被修改,值也可以被修改const int * p2 = &x; // 指针可以被修改,值不可以被修改(const int)原创 2021-10-30 22:19:34 · 127 阅读 · 0 评论 -
力扣贪心算法
顾名思义,贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。举一个最简单的例子:小明和小王喜欢吃苹果,小明可以吃五个,小王可以吃三个。已知苹果园里有吃不完的苹果,求小明和小王一共最多吃多少个苹果。在这个例子中,我们可以选用的贪心策略为,每个人吃自己能吃的最多数量的苹果,这在每个人身上都是局部最优的。又因为全局结果是局部结果的简单求和,且局部结果互不相干,因此局部最优的策略也同样是全局最优的策略。有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都原创 2021-10-27 21:31:52 · 257 阅读 · 0 评论 -
位运算(力扣)
补码:先按正数转换,然后取反加1。要将十进制的-10用二进制表示,先将10用二进制表示:0000 0000 0000 1010取反:1111 1111 1111 0101加1:1111 1111 1111 0110所以,-10的二进制表示就是:1111 1111 1111 0110按位与、按位或、按位异或(一样为0)(任何数与0异或,结果都是其本身)、取反利用异或实现两数交换a = a ^ b b = b ^ a a = a ^ b;例题如下class...原创 2021-03-25 18:52:39 · 221 阅读 · 0 评论 -
深度优先搜索
递归好难哦QAQ题目描述 给定一个二维的 0-1 矩阵,其中 0 表示海洋,1 表示陆地。单独的或相邻的陆地可以形成岛屿,每个格子只与其上下左右四个格子相邻。求最大的岛屿面积。对于四个方向的遍历,可以创造一个数组 [-1, 0, 1, 0, -1],每相 邻两位即为上下左右四个方向之一。方法一:一种是先判定是否越界,只有在合法的情况下才进行下一步搜索(即判断放在调用递归函数前);vector<int> direction{-1, 0, 1, 0, -1};// 主原创 2021-03-22 16:45:43 · 195 阅读 · 0 评论 -
贪心算法及简单例题
本文通过leedcode为蓝桥杯省赛做准备贪心算法:保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的例题:1.有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个大小。每个孩子只能吃最多一个饼干,且只有饼干的大小大于孩子的饥饿度时,这个孩子才能吃饱。求解最多有多少孩子可以吃饱。 贪心策略:给剩余孩子里最小饥饿度的孩子分配最小的能饱腹的饼干。 int findContentChildren(vector<int>& children, vecto原创 2021-03-19 17:59:29 · 377 阅读 · 0 评论 -
力扣数组刷题系列
leedcodefor(vector<int>::iteratori=nums.begin();i!=nums.end();i++)if(((1+(int)log10(*i))&1)==0)res++;unordered_map<int,int>P;for(inti=0;i<m;++i)//构造P序列P.insert({i+1...原创 2021-03-17 22:06:52 · 162 阅读 · 0 评论