自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 算法训练营Day11 | 递归遍历,迭代遍历,统一迭代,层序遍历

理论基础,递归遍历,迭代遍历,统一迭代,层序遍历文章讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%80%92%E5%BD%92%E9%81%8D%E5%8E%86.html文章讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BF%AD%E4%BB%A3%E9%81%8D%E5%8E%86.html文章讲解:https://p

2024-10-17 20:59:10 410

原创 算法训练营Day10 | 150.逆波兰表达式求值,239. 滑动窗口最大值,347. 前 K 个高频元素

后缀表达式,用栈实现计算:数字压入栈,碰到符号则弹出栈顶的两个数字,注意运算顺序,计算完压入栈中,最后栈中的元素即为最后的答案。用双端队列实现单调队列,只要后元素比前元素大,前一个元素则无意义(后元素比前元素在窗口内的时间长)出现频率前k高的元素,就是保留k个最大值,使用小顶堆每次将最小元素出队,保留k个值即为最大值。参考题解中的方法,分为未形成窗口和形成窗口两部分,感觉主要是考察双端队列deque的使用。优先级队列每次出队的元素是队列中优先级最高的那个元素,而不是队首的元素。

2024-10-15 22:23:39 236

原创 算法训练营Day9 | 232.用栈实现队列,225. 用队列实现栈,20. 有效的括号,1047. 删除字符串中的所有相邻重复项

用两个栈实现队列,分为inStack和outStack,最先进来的会在inStack的低端,如果要弹出的话需要将inStack中的所有元素压入outStack中,这样最底端的元素就在栈顶,如果有新元素进来都需要先压入inStack,始终保持outStack栈顶为队列最前端元素,直到outStack为空才将inStack中元素弹出到outStack中。理论基础,232.用栈实现队列,225. 用队列实现栈,20. 有效的括号,1047. 删除字符串中的所有相邻重复项。c++中的string也能实现栈。

2024-10-15 21:46:31 673

原创 算法训练营Day8 | 151.翻转字符串里的单词,卡码网:55.右旋转字符串,28. 实现 strStr(),459.重复的子字符串

151.翻转字符串里的单词,卡码网:55.右旋转字符串,28. 实现 strStr(),459.重复的子字符串,字符串总结,双指针回顾。双指针,两种方式,一种原地修改(适合可以修改字符串的语言),一种需要额外的空间O(n),搞清楚字符串的下标是难点。看了题解,得到的结论,原地实现字符串右移动,先反转整体(让右部分到字符串左边),再反转两部分,左移同理。

2024-10-14 22:11:43 283

原创 算法训练营Day7 | 344. 反转字符串,541. 反转字符串II,卡码网:54.替换数字

344.反转字符串,541. 反转字符串II,卡码网:54.替换数字。模拟题,统计正常反转的次数,对最后一部分反转特殊处理即可。双指针:两个指针一个指向头一个指向尾,不断交换即可。看了题解尝试了双指针扩容的方法。看到这题目想到了直接输出。

2024-10-09 22:19:12 295

原创 算法训练营Day6 | 454.四数相加II,383. 赎金信 ,15. 三数之和,18. 四数之和

和两数相加差不多的思路,只不过两数相加用哈希表存下标,这道题用哈希表存数量;先分成两组,第一组两两相加,用哈希存储可能的和以及出现的次数;要在magazing中找ransomNote,所以要将magazine中的字符数量存在哈希表中,然后遍历ransomNote,让其对应的字符数量减少1,如果字符数小于0则返回false(字符数不够或者不存在该字符)排序+双指针:对于三个不同的数,a、b、c只要满足每次a<b<c即可保证数组不重复,剩下的只要满足每个数不和前一个数相同即可,这样每个位置的数只会取到一次。

2024-10-09 20:50:45 371

原创 算法训练营Day5|242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

两个集合:先用集合set1去除数组1的重复元素,再用集合set2存储同时在set1中和数组2中的元素,再遍历一遍set2存储在数组中。哈希表理论基础,242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和。三种情况:结果为i,进入循环,值接近无限大(被证明不可能)题意保证两个字符串长度必须相同,所以只需要考虑这种情况。unordered_map底层用哈希表实现。unordered_set底层用哈希表实现。题意保证一定会找到结果。

2024-10-08 20:33:37 869

原创 算法训练营Day4|24.两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II

24.两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II。数值相同,不代表指针相同。

2024-10-07 22:30:38 821

原创 算法训练营Day3|203.移除链表元素,707.设计链表,206.反转链表

迭代:使用虚拟头节点,这样可以不用额外考虑删除头节点的情况(把头节点视作普通节点),假设有三个节点,那么删除第二个节点时需要让第一个节点的next指向第三个节点,所以指针应该指向第一个节点才能完成这个操作,所以每次判断p->next是否需要删除,如果p->next 为NULL则表示已经遍历完成(最后一个节点在p还没有指向该节点之前已经完成了判断)递归函数返回的是不包含val值的链表的头节点,递归的终止条件是 head 为空,先判断除了头节点之外的值是否为val,最后判断头节点。

2024-10-07 15:05:31 452

原创 算法训练营Day2|209.长度最小的子数组,59.螺旋矩阵II,区间和,开发商购买土地

自己的想法:自己列了前几组发现一个规律,就是螺旋是按照 → ↓ ← ↑ 的顺序为一个循环,总共要改变2n-1次方向,并且一个循环结束后相同方向上都会减少一个位置,也就是 i / 4个位置;经过将结果输出然后debug,成功ac了。题解思路:使用l,r,b,t记录边界位置,按照 → ↓ ← ↑ 的顺序为一个循环,每次改变方向时相应的边界就会减小一个,每次只需要从左边界遍历到右边界赋值(从上到下,从右到左,从下到上)即可。首先存储每行和每列的累加和,然后遍历每行和每列,存储当前行之前行的累加和(包括当前行);

2024-09-30 20:27:32 307

原创 算法训练营Day1|704. 二分查找,27. 移除元素,977.有序数组的平方

文章讲解:https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.html。自己的想法:既然是平方排序,那就是比较绝对值,所以首先找到数组中正负分开的那个下标,然后两个指针一个向左一个向右同时比较指针所指元素的绝对值大小,将绝对值小的数平方后放入新的数组中。题解思路:用两个指针从两端开始比较,将大的值存入新数组的末尾,从后往前存储;报名迟了两天,今天补上第一天的内容。

2024-09-27 16:37:39 681

原创 PAT B.1026 程序运行时间

PAT B.1026 程序运行时间注意四舍五入,输出要注意格式为%02d

2020-03-16 16:16:59 87

原创 PAT A1065.A+B and C

最近在学《算法笔记》这本书,想在刷题的同时记录一些基本概念。PAT A1065.A+B and Clong long 的范围是[-2⁶⁴,2⁶³),两个整数相加可能会溢出。

2020-03-05 18:41:08 111

仿windows画板.zip

本人大三的课程设计,采用c#,可以运行(包含详细课程设计文档) 功能:可以实现绘制椭圆、直线,有铅笔、橡皮、填充桶、颜色选取工具,能实现文件打开、保存,能编辑颜色等基本功能

2021-08-03

空空如也

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

TA关注的人

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