自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixin_43892514的博客

旁人若问其中意,且到寒寨吃苦茶

  • 博客(177)
  • 收藏
  • 关注

原创 855-考场就座

当学生进入考场后,他必须坐在离最近的人最远的座位上。如果有多个这样的座位,他会坐在编号最小的座位上。(另外,如果考场里没有人,那么学生就坐在 0 号座位上。void leave(int p) 指定坐在座位 p 的学生将离开教室。// 返回 0,房间里没有人,学生坐在 0 号座位。// 返回 9,学生最后坐在 9 号座位。// 返回 4,学生最后坐在 4 号座位。// 返回 2,学生最后坐在 2 号座位。// 返回 5,学生最后坐在 5 号座位。int seat() 返回下一个学生将会入座的座位编号。

2025-04-11 07:56:47 375

原创 环形数组总结

111。

2025-04-06 14:50:13 111

原创 括号匹配问题

比方说 “())”, “())(())))” 和 “(())())))” 都是平衡的, “)()”, “()))” 和 “(()))” 都是不平衡的。比如说 s = “))(” 这种情况,插入 2 个左括号之后,还要再插入 1 个右括号,使得 s 变成 “()()()”,才是一个有效括号串。例如,如果 s = “()))” ,你可以插入一个开始括号为 “(()))” 或结束括号为 “())))”。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。

2025-03-29 09:05:35 306

原创 生成运算树

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。输入:tokens = [“10”,“6”,“9”,“3”,“+”,“-11”,“解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6。解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。输入:tokens = [“4”,“13”,“5”,“/”,“+”]输入:tokens = [“2”,“1”,“+”,“3”,“*”]有效的算符为 ‘+’、‘-’、‘*’ 和 ‘/’。

2025-03-23 12:09:10 418

原创 差分数组总结

差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减。前缀和技巧 主要适用的场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和// 构造差分数组i++) {// 根据差分数组构造结果数组i++) {这样构造差分数组 diff,就可以快速进行区间增减的操作,如果你想对区间 nums[i…

2025-03-16 15:50:01 277

原创 208.前缀树

前缀树介绍

2025-01-19 17:33:42 94

原创 207. 课程表- 图环的检测

我这里先直接套用遍历所有路径的 DFS 代码模板,用一个 hasCycle 变量记录是否存在环,当重复遍历到 onPath 中的节点时,就说明遇到了环,设置 hasCycle = true。假设另一个节点 5 有一条指向 2 的边,你在以 5 为起点遍历所有可达的路径时,肯定还会走到 2,那么请问,此时你是否还需要继续遍历 2 的所有可达路径呢?你如果觉得有反例,可以自己画一下,实际上是没有反例的。看到依赖问题,首先想到的就是把问题转化成「有向图」这种数据结构,只要图中存在环,那就说明存在循环依赖。

2025-01-19 16:19:18 425

原创 图-岛屿-dfs

岛屿系列问题可以用 DFS/BFS 算法或者 Union-Find 并查集算法 来解决。用 DFS 算法解决岛屿题目是最常见的,每次遇到一个岛屿中的陆地,就用 DFS 算法吧这个岛屿「淹掉」。如何使用 DFS 算法遍历二维数组?你把二维数组中的每个格子看做「图」中的一个节点,这个节点和周围的四个节点连通,这样二维矩阵就被抽象成了一幅网状的「图」。为什么每次遇到岛屿,都要用 DFS 算法把岛屿「淹了」呢?主要是为了省事,避免维护 visited 数组。

2025-01-15 22:12:33 329

原创 【树构造专题】树的构造

二叉树解题的思维模式分两类1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。无论使用哪种思维模式,你都需要思考:如果单独抽出一个二叉树节点,它需要做什么事情?需要在什么时候(前/中/后序位置)做?其他的节点不用你操心,递归函数会帮你在所有节点上执行相同的操作。

2025-01-05 17:18:18 176

原创 递归-迭代

【代码】递归-循环。

2024-11-23 21:56:23 290

原创 LRU-LFU缓存算法

LFU:Least Frequently Used,也就是每次淘汰那些使用次数最少的数据。

2024-11-10 20:12:02 910

原创 设计模式总结

2、关联、聚合、组合只能配合语义,结合上下文才能够判断出来,而只给出一段代码让我们判断是关联,聚合,还是组合关系,则是无法判断的。1、它们关系的强弱顺序:泛化= 实现> 组合> 聚合> 关联> 依赖。聚合、组合:箭头指向整体,拥有者。关联、依赖:箭头指向被使用者。泛化、实现:箭头指向父类。

2024-10-20 21:08:25 563

原创 shared_ptr分析

【代码】智能指针详解。

2024-10-19 22:26:13 198

原创 234.回文链表

这么做的核心逻辑是什么呢?实际上就是把链表节点放入一个栈,然后再拿出来,这时候元素顺序就是反的,只不过我们利用的是递归函数的堆栈而已。给你一个单链表的头节点 head ,请你判断该链表是否为。如果是,返回 true;否则,返回 false。3、从slow开始反。

2024-10-13 16:37:50 458

原创 3sum_nSum

不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]注意,输出的顺序和三元组的顺序并不重要。注意:答案中不可以包含重复的三元组。解释:唯一可能的三元组和不为 0。输入:nums = [0,1,1]输入:nums = [0,0,0]解释:唯一可能的三元组和为 0。输出:[[0,0,0]]

2024-08-25 20:03:45 423 1

原创 动态规划双字符串

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。输入:word1 = “intention”, word2 = “execution”输入:text1 = “abcde”, text2 = “ace”输入:text1 = “abc”, text2 = “abc”解释:最长公共子序列是 “abc” ,它的长度为 3。

2024-07-14 16:31:49 730

原创 差分数组总结

差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减。

2024-05-26 17:19:14 405

原创 算法专题-单调栈

一句话解释单调栈,就是一个栈,里面的元素的大小按照他们所在栈内的位置,满足一定的单调性。

2023-10-14 15:03:12 394

原创 【LeetCode72】编辑距离

【代码】【LeetCode72】编辑距离。

2023-04-05 18:04:37 457

原创 【剑指 Offer II 095】最长公共子序列

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。输入:text1 = “abcde”, text2 = “ace”输入:text1 = “abc”, text2 = “abc”解释:最长公共子序列是 “ace” ,它的长度为 3。解释:最长公共子序列是 “abc” ,它的长度为 3。来源:力扣(LeetCode)

2023-04-05 17:58:36 506

原创 【并查集】【Union-Find】

链接:https://leetcode.cn/problems/number-of-provinces/solution/python-duo-tu-xiang-jie-bing-cha-ji-by-m-vjdr/

2023-01-15 18:54:52 539

原创 C++进制转换

进制转化

2022-08-07 22:58:26 973

原创 C++常用知识点积累

优先队列c++优先队列(priority_queue)用法详解STL总结:(queue队列)(pair)(set集合)(stack栈)(priority_queue优先队列)

2022-03-06 21:38:03 409

原创 剑指 Offer II 037. 小行星碰撞

文章目录题目描述解题思路(1)使用栈实现(2)数组模拟栈实现题目描述给定一个整数数组 asteroids,表示在同一行的小行星。对于数组中的每一个元素,其绝对值表示小行星的大小,正负表示小行星的移动方向(正表示向右移动,负表示向左移动)。每一颗小行星以相同的速度移动。找出碰撞后剩下的所有小行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。示例 1:输入:asteroids = [5,10,-5]输出:[5,1

2022-03-04 20:09:30 194

原创 c++新特性ing

结构化绑定C++17尝鲜:结构化绑定声明(Structured Binding Declaration)

2021-12-12 18:40:22 290

原创 LeetCode1122:数组的相对排序

题目描述给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]输出:[2,2,2,1,4,3,3,9,6,7,19]提示:1 <= arr1.length,

2021-12-12 18:05:39 413

原创 【LeetCode 151】翻转字符串里的单词

题目描述给你一个字符串 s ,逐个翻转字符串中的所有 单词 。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。说明:输入字符串 s 可以在前面、后面或者单词间包含多余的空格。翻转后单词间应当仅用一个空格分隔。翻转后的字符串中不应包含额外的空格。示例 1:输入:s = “the sky is blue”输出:“blue is sky the”示例 2:输入:s = " hello world

2021-11-27 22:49:10 183

原创 动态规划_最长回文子串/子序列

题目描述给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”示例 3:输入:s = “a”输出:“a”示例 4:输入:s = “ac”输出:“a”动态规划class Solution {public: string longestPalindrome(string s) { int n = s.size

2021-11-26 21:07:26 614

原创 合并数组区间-双指针

题目描述以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入:intervals = [[1,4],[

2021-11-23 22:10:26 159

原创 tmet(learning c++)

int FinaDestination(vector<vector<int> votes, int initialPoint){ int i = 0; vector<bool> visited(votes.size(),false); int dest = initialPoint; while ( i < votes.size()) { if (votes[i][1] == dest) { if

2021-10-24 16:59:07 385

原创 1431. 拥有最多糖果的孩子

题目描述https://leetcode-cn.com/problems/kids-with-the-greatest-number-of-candies/给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 1:输入:candies = [2,3,

2021-10-24 16:07:56 111

原创 string与int之间转换

一、int 转换为 string(1)使用to_string()函数格式:string str = to_string(number);需引入头文件:#include<string>string to_string (int val);string to_string (long val);string to_string (long long val);string to_string (unsigned val);string to_string (unsigned lon

2021-10-20 22:53:36 39364 1

原创 前缀和应用总结

一、前缀和定义假设我们有一个字符串ABCDE,什么是这个单词的前缀,A、AB、ABC、ABCD、ABCDE就是这个单词的前缀,就是从第一个字母开始,依次往后拼接。E、ED、EDC、EDCB、EDCBA被称为这个单词的后缀。那么对于一个数组的前缀,例如数组a = [1,2,3,4,5],我们维护一个由前缀的和组成的数组sum,sum[i]表示数组中a[0]~ a[i] 的和。sum[0] = a[0]sum[1] = a[0] + a[1]sum[2] = a[0] + a[1] + a[2]su

2021-10-20 07:51:43 1683 1

原创 考试排名【结构体/多关键字排序】

题目描述http://acm.hdu.edu.cn/showproblem.php?pid=2093C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点。它的功能是怎么实现的呢?我们做好了题目的解答,提交之后,要么“AC”,要么错误,不管怎样错法,总是给你记上一笔,表明你曾经有过一次错误提交,因而当你一旦提交该题“AC”后,就要与你算一算帐了,总共该题错误提交了几回。虽然你在题数上,大步地跃上了一个台阶,但是在耗时上要摊上你共花去的时间。特别是,曾经有过的错误提交,每次都要摊上一定的单位时间分

2021-10-18 22:36:33 406

原创 二分搜索总结

标准二分搜索// 标准二分法int BinarySearch (vector<int> nums, int target) { if (nums.empty()) { return -1; } int left = 0; int right = nums.size() - 1; while (left <= right) { int mid = (right - left) / 2 + left;

2021-10-18 07:41:58 125

原创 两数之和(双指针/哈希表)

无序数组中任意两数之和题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3

2021-10-17 21:05:29 166

原创 字符串处理

leetcode总结/* * @Author: gavyn * @Date: 2021-10-16 18:23:34 * @LastEditTime: 2021-10-16 18:23:34 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \tmp\build\字符处理.cpp *//** * @description: 给定一个字符串,输出无重复字符的连续

2021-10-17 17:06:53 605

原创 【算法专题四】滑动窗口

算法框架/* 滑动窗⼝算法框架 */void slidingWindow(string s, string t){ unordered_map<char, int> need, window; for (char c : t) { need[c]++; } int left = 0, right = 0; int valid = 0; while (right < s.size()) { // c 是将

2021-10-16 21:29:20 470 1

原创 位运算总结

基本概念应用总结1. &(and)运算&运算通常用于二进制取位操作,例如一个数 & 1的结果就是取二进制的最末位。基础用法:(1)可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。(2)x & (x-1) 用于消去 x 的最后一位 1。(3)在运用(2)的基础上可以用来判断一个正整数是不是2的整数幂次,如果x & (x-1) 是0,说明是;如果不是0,说明不是;2. | (or)运算| 运算通常用于二进

2021-10-13 23:01:32 731

原创 【算法专题三】查找/排序算法

二分搜索// 标准二分法int BinarySearch (vector<int> nums, int target) { if (nums.empty()) { return -1; } int left = 0; int right = nums.size() - 1; while (left <= right) { int mid = (right - left) / 2 + left;

2021-10-12 07:59:09 135

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除