- 博客(47)
- 收藏
- 关注
原创 【秒杀考研数据结构+考研复试上机】day8.第四章 字符串 进阶题目
一些同学会使用split库函数,分隔单词,然后定义一个新的string字符串,最后再把单词倒序相加,那么这道题题目就是一道水题了,想一下,我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。版本一的代码是一般的思考过程,就是 先移除字符串前的空格,再移除中间的,再移除后面部分。解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。的逻辑是一样一样的,本题是移除空格,而 27.移除元素 就是移除元素。
2025-02-12 23:04:43
426
原创 【秒杀考研数据结构+考研复试上机】day7.第三章 哈希表part02.进阶题目
接下来如何移动left 和right呢, 如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了,因为数组是排序后了,所以right下标就应该向左移动,这样才能让三数之和小一些。这么写就是当前使用 nums[i],我们判断前一位是不是一样的元素,在看 {-1, -1 ,2} 这组数据,当遍历到 第一个 -1 的时候,只要前一位没有-1,那么 {-1, -1 ,2} 这组数据一样可以收录到 结果集里。说到去重,其实主要考虑三个数的去重。
2025-02-06 22:39:48
744
原创 【秒杀考研数据结构+考研复试上机】day6.第三章 哈希表part01.理论基础+经典习题
总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!为什么会想到用哈希表哈希表为什么用map本题map是用来存什么的map中的key和value用来存什么的把这四点想清楚了,本题才算是理解透彻了。
2025-02-06 21:58:25
805
原创 【秒杀考研数据结构+考研复试上机】链表总结篇【408常考】
在这篇文章关于链表,你该了解这些! (opens new window)中,介绍了如下几点:可以说把链表基础的知识都概括了,但又不像教科书那样的繁琐。在链表:听说用虚拟头节点会方便很多? (opens new window)中,我们讲解了链表操作中一个非常重要的技巧:虚拟头节点。链表的一大问题就是操作当前节点必须要找前一个节点才能操作。这就造成了,头结点的尴尬,因为头结点没有前一个节点了。每次对应头结点的情况都要单独处理,所以使用虚拟头结点的技巧,就可以解决这个问题。在链表:听说用虚拟头节点会方便很多? (
2025-02-06 20:29:35
278
原创 【秒杀考研数据结构+考研复试上机】day4.链表进阶题目【408常考】
如果一个是 4ms 一个是 12ms,看上去好像是一个打败了80%,一个打败了20%,其实是没有差别的。建议使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。做题的时候自己能分析出来时间复杂度就可以了,至于力扣上执行用时,大概看一下就行。力扣上的统计如果两份代码是 100ms 和 300ms的耗时,其实是需要注意的。上面的代码我第一次提交执行用时8ms,打败6.5%的用户,差点吓到我了。给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
2025-01-25 20:31:54
292
原创 【秒杀考研数据结构+考研复试上机】day3.链表基础知识+习题
接下来说一说链表的定义。链表节点的定义,很多同学在面试的时候都写不好。这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。而在面试的时候,一旦要自己手写链表,就写的错漏百出。// 单链表int val;// 节点上存储的元素// 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数。
2025-01-24 20:36:35
774
原创 【秒杀考研数据结构+考研复试上机】day2.滑动窗口+前缀和习题+数组专题总结
最外层一圈要做四件事:上->右->下->左 依次填数。填完一圈后,把起点坐标“往里挪”,把“右/下边界”也往里收,进入下一圈。当圈数转完,如果是奇数维度,就在中间补一下最后一个元素。最核心的就是这个流程:上边 (从左到右) → 右边 (从上到下) → 下边 (从右到左) → 左边 (从下到上)然后不断往里缩,就可以把 n×n 的二维数组按螺旋方式填满啦。for(j;for(i;for(;j > stx;for(;i > sty;
2025-01-23 22:05:13
803
原创 【秒杀考研数据结构+考研复试上机】day1.数组理论基础与习题
一些录友可能看不懂内存地址,我就简单介绍一下, 0x7ffee4065820 与 0x7ffee4065824 差了一个4,就是4个字节,因为这是一个int型的数组,所以两个相邻数组元素地址差4个字节。而且大家如果使用C++的话,要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。这里的数值也是16进制,这不是真正的地址,而是经过处理过后的数值了,我们也可以看出,二维数组的每一行头结点的地址是没有规则的,更谈不上连续。
2025-01-22 23:00:52
386
原创 刷穿LeetCode1500题解(最优解法+图解+保姆级注释)【T11 ~ 20】
【代码】刷穿LeetCode1500题解(最优解法+图解+保姆级注释)【T11 ~ 20】
2023-05-13 16:50:11
222
原创 一道题学会最小步数模型------AcWing 1107. 魔板(详细图解 + 保姆级模板)
【代码】一道题学会最小步数模型------AcWing 1107. 魔板(详细图解 + 保姆级模板)
2023-05-09 20:07:21
144
原创 刷穿LeetCode1500题解(最优解法+图解+保姆级注释)【T1 ~ T10】
【代码】刷穿LeetCode1500题解(最优解法+图解+保姆级注释)【T1 ~ T10】
2023-05-04 21:34:58
238
原创 两小时学会使用Django框架!(不讲概念只讲实操+手把手项目实现)
后起之秀,将是未来趋势所向,可以作为Web,App,小程序等各种项目的后端开发效率高,生态完善,拥有官方社区长期支持运行效率高(误区:python效率低 => 用python写出的应用效率低)项目运行效率一般与框架关系不大计算密集的模块可以用C/C++实现,然后编译成动态链接库再import进来对于个人开发者来说,开发项目用时更短一.Python基础语法速通。
2023-04-30 11:25:52
154
原创 Python类的定义和使用与进阶(无废话,纯干货)
__init__是一个特殊方法用于在创建对象时进行初始化操作# 通过这个方法我们可以为学生对象绑定name和age两个属性print('%s正在学习%s.' % (self.name, course_name))print('%s只能观看《熊出没》.' % self.name)else:print('%s正在观看岛国爱情大电影.' % self.name)写在类中的函数,我们通常称之为(对象的)方法,这些方法就是对象可以接收的消息。
2023-04-17 20:57:45
964
原创 五分钟搞定Python中yield的用法(纯干货!!)
此时next(g)语句执行完成,所以输出的前两行(第一个是while上面的print的结果,第二个是return出的结果)是执行print(next(g))的结果。6.程序会继续在while里执行,又一次碰到yield,这个时候同样return 出4,然后程序停止,print函数输出的4就是这次return出的4.5.又开始执行下面的print(next(g)),这个时候和上面那个差不多,不过不同的是,,这时候要注意,这个时候赋值操作的右边是没有值的(因为刚才那个是return出去了,
2023-04-17 12:47:43
293
原创 冲刺蓝桥杯好题合集 + 最优解题代码【坚持刷完稳冲国一!!!】(第三弹)
【代码】冲刺蓝桥杯好题合集 + 最优解题代码【坚持刷完稳冲国一!!!】(第三弹)
2023-04-02 22:44:33
139
1
原创 五分钟搞定进制转换!!!(详解+模板)
二进制(B)————>0 ~ 1八进制(O)————>0 ~ 7十进制 (D) ————>0 ~ 9十六进制(H)————>0 ~ 9 、A(10) ~ F(15)
2023-04-02 11:12:56
167
1
原创 冲刺蓝桥杯好题合集 + 最优解题代码【坚持刷完稳冲国一!!!】(第二弹)
【代码】冲刺蓝桥杯好题合集 + 最优解题代码【坚持刷完稳冲国一!!!】(第二弹)
2023-03-30 20:15:28
86
原创 初级数据结构模板(持续更新中~~~)
其中1串为[ 1, next[ j ] ],3串为[ j - next[ j ] + 1 , j ]。//递归查找祖宗节点。/*每一个字符前的字符串都有最长相等前后缀,而且最长相等前后缀的长度是我们移位的关键,//如果j有对应p串的元素, 且s[i]!find(3) p[3] = 4 p[3] = 4 将p[3]返回。find(2) p[2] = 3 p[2] = 4 将p[2]返回。find(1) p[1] = 2 p[1] = 4 将p[1]返回。
2023-03-21 21:00:11
116
原创 基础算法板子(持续更新中~~~)
/ 去掉前缀和和前面的0。1.设一个计数数组S[n],记录在[i , j]区间内每个数出现的次数。//高精度加法 A + B = C A >= 0 , B >= 0。//当更新区间为 r = mid , l = mid + 1 时。//高精度减法 A >= 0 , B >= 0 , A >= B。// 如果t不够减(t<0)使t借位 如果t够减t = 剩下的。// 大 - 上长方形 - 左长方形 + 多减了一次的正方形。//当区间划分为r = mid - 1 , l = mid。与整数二分不一样哦!
2023-03-21 20:50:41
86
原创 背包问题总结
我们可以对主件i的“附件集合”先进行一次01背包,得到费用依次为0..V-c[i]所有这些值时相应的最大价值f'[0..V-c[i]]。那么这个主件及它的附件集合相当于V-c[i]+1个物品的物品组,其中费用为c[i]+k的物品的价值为f'[k]+w[i]。也就是说原来指数级的策略中有很多策略都是冗余的,通过一次01背包后,将主件i转化为 V-c[i]+1个物品的物品组,则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}。int k = 1;
2023-03-21 15:16:13
66
原创 代码源算法课程笔记(持续更新中~~~)
x | (1 << (k - 1)) 将右数第k位变成0。x & ~(1 << (k - 1)) 将右数第k位变为1。5、x << k 表示将x转化为二进制后,向左移动k位,并在末尾补个0得到的值。x << 1 在最后加个0 == 乘 2。(x << 1) | 1 在最后添加1。4、进行位运算时,系统会自动将数字转化为二进制的形式,再逐位计算。7、例子:x >> 1 去掉最后一位 == 除以2。3、异或不同为1, 相同为0。2、| 按位或同为0才为0。1、&按位与同为1才为1。
2023-03-21 13:38:01
770
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人