算法
文章平均质量分 59
BiuPsYao
现学生党一枚
展开
-
二进制与十进制转换(包括整数和小数的转换)
二进制与十进制转换(包括整数和小数的转换)原创 2023-03-02 11:18:42 · 724 阅读 · 0 评论 -
C++离散分布,uniform_int_distribution<>
uniform_int_distribution原创 2022-06-09 14:37:17 · 351 阅读 · 0 评论 -
LeetCode 875 爱吃香蕉的珂珂,二分枚举打卡
LeetCode 875 二分枚举原创 2022-06-08 11:32:19 · 250 阅读 · 0 评论 -
LeetCode 829. 连续整数求和,比题解简单万倍
LeetCode 829 连续整数求和 ,比题解简单万倍原创 2022-06-03 10:35:58 · 209 阅读 · 0 评论 -
图论,单源广搜BFS,附LeetCode.127.433.752解题注释
单源最短路问题,我们常常使用BFS来解决,但实际题目中,不会直接的把题目的解法直白的告诉你,常常是以一种不相关的表述,所以我们刷题锻炼的就是如何从不相关的题目描述中提取出来这个题目真正想要表达的。这里博主列出LeetCode的三个题目,基本都是没有直观的描述图,并且解法进本相同,套用单源BFS,以下题解(包含注释),可作为大家学习板子和理解题目使用。LeetCode433. 最小基因变化从start 到 end,其中每次操作只允许一个位置发生一次编码变化,而且变化的编码是限定的(A T C G)原创 2022-05-07 15:06:34 · 348 阅读 · 0 评论 -
约瑟夫环问题模板
转载原文链接class Solution {public: int findTheWinner(int n, int k) { int pos = 0; //我们这里使用0下标来执行迭代 for (int i = 2; i < n + 1; ++i) { //i 为游戏的人数 pos = (pos + k) % i; } return pos + 1; //题意要求,如果是下标1开始,这里+1,否则转载 2022-05-04 15:54:39 · 80 阅读 · 0 评论 -
LeetCode291周赛题解,附‘字符串总引力‘详解
LeetCode周赛291 字符串总引力详解原创 2022-05-02 12:43:12 · 368 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串(O(1)空间复杂度,带大家回忆C++ string::find())
这道题目的思路是比较好想的,滑动窗口来维护最长子串,其中有一点优化的官方提到的当确定了一个子串的窗口之后,遇到重复字符,要维护窗口时我们可以确定左边界++右边界是重新把窗口大小该为零(即此时右边界 = 左边界);还是右边界不变,之后再继续维护呢?以示例一中的字符串 abcabcbbabcabcbbabcabcbb为例,找出从每一个字符开始的,不包含重复字符的最长子串,那么其中最长的那个字符串即为答案。对于示例一中的字符串,我们列举出这些结果,其中括号中表示选中的字符以及最长的字符串:以原创 2022-04-07 14:09:57 · 505 阅读 · 0 评论 -
C++ string::find() 拒绝哈希表空间使用
各位在刷LeetCode是不是经常遇到开哈希来查找相关元素的出现?作为追求双100的“玩家”肯定是不友好的今天带大家回忆C++字符串中的find()函数,快速处理字符问题O(1)空间!!C++ string中的find()函数1.string中find()返回值是字母在母串中的位置(下标记录),如果没有找到,那么会返回一个特别的标记npos。(返回值可以看成是一个int型的数) 1 #include<cstring> 2 #include<cstdio> 3 #in原创 2022-04-07 14:22:28 · 111 阅读 · 0 评论 -
leetcode 2212. 射箭比赛中的最大得分
LeetCode 2212. 射箭比赛中的最大得分原创 2022-03-21 13:09:48 · 523 阅读 · 0 评论 -
区间求和问题(转载)
针对不同的题目,我们有不同的方案可以选择(假设我们有一个数组):数组不变,求区间和:「前缀和」、「树状数组」、「线段树」多次修改某个数(单点),求区间和:「树状数组」、「线段树」多次修改某个区间,输出最终结果:「差分」多次修改某个区间,求区间和:「线段树」、「树状数组」(看修改区间范围大小)多次将某个区间变成同一个数,求区间和:「线段树」、「树状数组」(看修改区间范围大小)这样看来,「线段树」能解决的问题是最多的,那我们是不是无论什么情况都写「线段树」呢?答案并不是,而且恰好相反,只转载 2022-04-04 13:38:19 · 828 阅读 · 0 评论 -
LeetCode 288周赛 6039. K 次增加后的最大乘积
对题目进行一个简单的分析:1. 对于不同的nums中的元素,K次增加1,达到最后元素乘积最大2.最大的K次操作不唯一3.分析最大的结果影响如[2,6] ,K = 4。如果我们把四次操作全部给最大数6,ans = 2 * 10 = 20,如果全给最小数2, ans = 6 * 6 = 36。如果把四次操作组合法分别给2,6 = [27,32,35]的结果列举出来之后(记为sum[])发现, 20 < sum[] < 36.4.再扩展的多个数的情况也是符合以上的分析。即一直把+1操作给..原创 2022-04-10 13:48:20 · 866 阅读 · 0 评论 -
LeetCode994. 腐烂的橘子(矩阵多源广搜)
LeetCode994. 腐烂的橘子矩阵多源广搜的引入题目分析:矩阵中 0 1 2三种元素三种元素的出现次数和是否出现不确定(初始可能有多个腐烂的橘子)考虑是否需要剪枝:全0 结果需要返回0,只要最终包含的有1,返回-1其他的情况则按照橘子腐烂的方向来确定全部腐烂的时间题目转换:即把所有没有腐烂的橘子(1),找到距离他最近的已经腐烂的橘子(2),最后整个矩阵(除去值0的位置)遍历完之后,找出最长路径,所以问题就被转换为矩阵的多源最短路径问题 .使用到的算法矩阵的多源广搜代码及注释(c原创 2022-04-11 16:43:05 · 124 阅读 · 0 评论 -
leetcode 146.LRU缓存
LeetCode LRU缓存 双链表+哈希表 保姆式代码解析原创 2022-03-18 13:22:13 · 85 阅读 · 0 评论 -
LeetCode307.区域和检索 - 数组可修改
LeetCode307.区域和检索 - 数组可修改树状数组板子题,维护前缀和,控制时间复杂度代码附上(注释)树状数组知识点讲解看我这篇文章树状数组class NumArray {private: vector<int> tree; //树状数组 vector<int> &nums; int lowBit(int x) { return x & -x; } void add(int index, in原创 2022-04-05 14:12:30 · 432 阅读 · 0 评论 -
力扣杯春赛 ,宝石补给、烹饪料理Easy
写在前面,本文是博主打春赛的记录,另外,博主是“菜鸡”比赛来晚了,打开电脑,进入竞赛界面,ohhhhhhhhhhhh,有点高端,还有动态榜,有点ICPC和ACM的味道了,总体浏览题目,2 + 1 + 2 五个题,简单+中等+困难。直接抛弃后两个困难题。第一题:宝石补给,题意就是给一个数组表示每人所拥有的宝石,然后一个操作数组,把第一个操作数的宝石的一半(下取整)给第二个操作数,最终返回一个最大宝石数与最小宝石数的差。纯模拟,数据量不大,Easy题。直接贴代码!class Solution {pu原创 2022-04-17 12:12:04 · 487 阅读 · 0 评论 -
多源广度优先搜索(LeetCode542. 01矩阵)
LeetCode542. 01矩阵广度优先搜索对于矩阵中的每一个元素,如果它的值为 0,那么离它最近的 0 就是它自己。如果它的值为 1,那么我们就需要找出离它最近的 0,并且返回这个距离值。那么我们如何对于矩阵中的每一个 1,都快速地找到离它最近的 0 呢?如果矩阵中只有一个0,那么我们可以直接使用DFS深搜递归,或者单源的BFS广搜队列,找完整个矩阵,更新距离即为最终答案如图:初始状态:_ _ _ _ _ 0 _ __ _ _ __ _ _ _其中只有一个 0,剩余的 1 我们原创 2022-04-11 16:08:27 · 443 阅读 · 0 评论 -
算法学习,转载记录(持续记录)
个人转载记录算法优质文章,仅做笔记,侵删原创 2022-03-28 14:07:36 · 64 阅读 · 0 评论 -
LeetCode 380. O(1) 时间插入、删除和获取随机元素
LeetCode 380. O(1) 时间插入、删除和获取随机元素O(1) 时间插入、删除和获取随机元素 自然想到一些数据结构的使用,set、map的find(),count();vector的下标操作.本文主要记录随机化操作,对于查找、删除、插入操作代码附上不做解释rand()函数:0至RAND_MAX之间的随机数值,而RAND_MAX的值与int位数有关,最小是32767.srand()函数:srand()可用来设置rand()产生随机数时的随机数种子。通过设置不同的种子,我们可以获取原创 2022-04-13 16:03:07 · 381 阅读 · 0 评论 -
排列组合,回溯训练(配LeetCode训练题链接)
LeetCode77. 组合LeetCode46. 全排列LeetCode784. 字母大小写全排列题目链接直接给大家挂上回溯:简单的就可以理解为递归的“修改版”,举个例子:如平常的二叉树的遍历,我们在使用dfs时,选择递归边界指针为空。然后执行每个遍历节点的操作(如输出)。执行完成之后我们就没有别的操作了。而回溯便可以在每一步递归完成的时候,回头看看(做一些操作:还原)回溯和递归的算法设计相同:1.递归边界;2.参数传递;3.每层递归的操作LeetCode77. 组合这个题目作为回原创 2022-04-13 19:57:51 · 160 阅读 · 0 评论 -
格雷码 二进制码
格雷码 二进制码 位运算 异或运算原创 2022-01-08 14:27:32 · 529 阅读 · 0 评论 -
C++ priority_queue排序及维护最大最小值的数据结构
C++ priority_queue排序及维护最大最小值得数据结构优先队列:其底层是用堆来进行实现的。在优先队列中,队首元素一定是当前队列中优先级最高(排序)的那一个(默认是大根堆)。大根堆、小根堆的分析:对于int型数据,大根堆就是从大到小排序,小根堆就是从小到大。扩展到string char等类型依旧模板申明带3个参数:priority_queue<Type, Container, Functional>,其中Type 为数据类型,Container为保存数据的容器,Fu原创 2022-04-10 13:40:04 · 1685 阅读 · 0 评论 -
LeetCode 1606. 找到处理最多请求服务器
LeetCode 1606. 找到处理最多请求服务器 保姆级代码注释原创 2022-03-30 14:19:48 · 287 阅读 · 0 评论 -
LeetCode19.删除链表的倒数第N个结点
LeetCode19.删除链表的倒数第N个结点代码注释解析/** * 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, Lis原创 2022-04-06 17:23:21 · 857 阅读 · 0 评论 -
LeetCode 字典序数字系列
LeetCode 字典序数字系列放上两个题目:字典序排数(中等),字典序的第K小数字(困难)首先说明什么是字典序:科班的同学应该都知道,在比较字符串的大小的时候是按照字典序来比较的。例如:“abdcefg” 和 “abcdefg” 按字典序比较,结果应该是前者大于后者。因为相同长度字符串,从头到尾按字符比较,第三位 ddd >>> ccc.对于不等长的字符串,也是这个较规则,如图:同理,我们在数字上也按照字符串处理,如:123 >122、2>123.1原创 2022-04-18 17:12:36 · 642 阅读 · 0 评论 -
二分查找模板(y总版)
二分查找模板首先先上模板,y总(B站大雪菜)总结出来了两套二分的代码,基本能解决九成左右的二分问题.二分在特别的边界问题上可以选用此模板作为参考。当然在一些简单的边界问题上,可以自己思考边界来自己写代码。版本一当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时,其更新操作是r = mid或者l = mid + 1;计算mid时不需要加1。int bsearch_1(int l, int r){ while (l < r) { i原创 2022-04-30 13:43:23 · 1512 阅读 · 0 评论