- 博客(15)
- 收藏
- 关注
原创 代码随想录打卡Day7
这一题可以用数组模拟哈希表的方法来统计字符出现次数来做。由于题目中字符串只包含小写字母,因此可以创建一个长度为 26 的整型数组。首先遍历字符串 s,将每个字母出现的次数记录在数组中;然后遍历字符串 t,对数组中对应位置的字母次数进行减操作。最后检查数组中所有元素是否都为零,若全为零则说明两个字符串的字母组成完全相同。
2026-03-19 16:45:42
38
原创 代码随想录打卡Day6
这一题可以使用双指针和虚拟头节点的方法。首先让快指针先移动 n+1 步,使得快慢指针之间相隔 n 个节点;然后同时移动快慢指针,当快指针到达链表末尾时(即fast=null时),慢指针恰好指向待删除节点的前一个节点。最后通过修改指针指向待删除节点的后一个节点,即可跳过倒数第 N 个节点,从而实现删除操作。
2026-03-18 15:54:14
34
原创 代码随想录打卡Day5
这一题可以用三指针法。首先定义三个指针:pre 指向当前节点的前一个节点(初始为 null),cur 指向当前节点(初始为头节点 head),temp 用于暂存当前节点的下一个节点。在遍历链表的过程中,每次先将 cur.next 保存到 temp,然后将 cur.next 指向 pre,实现局部反转;接着将 pre 和 cur 分别向前移动一位(pre 移动到 cur,cur 移动到 temp)。
2026-03-17 16:40:08
215
原创 代码随想录打卡Day4
对这道题我直接采用了直接遍历的方法。关键就是要考虑头节点的值与val是否相等两种情况。先处理头节点:如果头节点的值等于 val,则将头节点向后移动一位,直到头节点的值不等于 val。当头节点的值不等于 val,则使用一个指针 cur 指向当前节点(初始为头节点),遍历链表:如果 cur.next 的值等于 val,则跳过该节点(cur.next = cur.next.next);否则继续向后移动 cur。
2026-03-07 16:22:40
203
原创 代码随想录打卡Day3
这一题可以采用一圈一圈,由外圈到内圈的填充的方式,每一圈由四条边组成:上边、右边、下边、左边。通过控制每圈的起始位置和边界范围,逐步向内收缩,直到所有数字填充完毕。循环为从左到右,再从上到下,再从右到左,再从下到上的方式,并且采用左闭右开的边界判定方式。每完成一圈,起始点 [startX, startY) 向内移动一位,offset 增加 1,表示边界向内收缩。如果 n 为奇数,最中心会剩下一个格子未被填充,此时在循环结束后单独赋值为count。
2026-03-07 16:00:19
35
原创 代码随想录打卡Day2
这一题依旧可以用之前所学的双指针法。由于原数组是非递减顺序排列的,但可能包含负数,平方后最大值一定出现在数组的两端。因此可以采用双指针法:即左指针指向数组开头,右指针指向数组末尾,比较两个指针所指元素的平方值,将较大的那个放入结果数组的末尾,然后移动对应的指针,循环遍历即可达到排序的功能。
2026-03-01 21:21:11
154
原创 代码随想录打卡Day1
二分查找的核心是每次将查找区间缩小一半,前提是数组必须是有序的。关键是分组讨论target在middle的左边或者右边时,对于left和right索引的变化。区间是 [left, right),所以 right 初始值为 nums.length。循环条件是 left < right,因为当 left == right 时区间为空。= val 时,将其赋值给 nums[slow],然后 slow 前移。注意:因为是左闭右开,所以当nums[middle]>target时right可以直接=middle。
2026-02-25 22:14:25
273
原创 十天学会C语言(day 6)
1.指针的定义与本质2.练习示例3.作业练习指针是存储内存地址的变量,相当于 “内存地址的容器”,类似现实中酒店房间号(地址)与房间内物品(值)的关系。直接访问:通过变量名访问(如int a=10;a=20;间接访问:通过地址访问(如int *p=&a;*p=20;取地址符号:取地址运算符(如&a获取变量a的地址)。星号:解引用运算符(如*p获取指针p指向地址的值)。
2025-06-08 19:55:59
454
原创 十天学会C语言(day 5)
定义:函数是完成特定功能的独立代码模块,遵循 “输入 - 处理 - 输出” 的逻辑模型,类似数学中的函数概念y = f(x)。作用:避免重复编写相同逻辑(如多次计算最大值时只需定义一次函数)。(1)无参数无返回值函数格式:void 函数名() { 函数体;(2)有参数有返回值函数格式:返回值类型 函数名(参数类型1 参数名1, 参数类型2 参数名2) { 函数体;return 表达式;(3)空函数(占位函数)格式:void 函数名() { }
2025-05-30 21:23:34
835
原创 十天学会C语言(day 4)
数组是由相同数据类型的元素组成的有序集合,通过数组名和下标访问每个元素。1.数组在内存中占据连续的存储单元,数组名代表首元素的内存地址。2.普通变量存储单个数据(如int a),而数组可存储批量数据(如int a[10]表示 10 个整型元素)。数据类型 数组名[元素个数]1.示例::定义包含 10 个整型元素的数组,下标范围 0~9。:定义包含 26 个字符型元素的数组,存储 26 个英文字母。2.注意事项:元素个数必须是常量(如#define N 5;int arr[N];
2025-05-23 19:48:41
1549
原创 用C语言求解水仙花数
一个 n 位数(n ≥ 3),如果它的各位数字的 n 次幂之和 等于该数本身,则被称为水仙花数。水仙花数必须是三位数或更多位数(n ≥ 3)。一位数和两位数不参与定义,因为它们的次幂和无法满足条件,且各位数字的幂次必须等于该数的位数。
2025-05-14 09:49:15
474
原创 用C语言求解最大公约数和最小公倍数
最小公倍数:首先从任意一个数开始,每次增加该数整数倍的值,直到找到第一个能被另外一个数整除的数,即为最小公倍数。最大公约数:首先从 1 开始遍历到两个数中的较小值,然后找到能同时整除两个数的最大数,即为最大公因数。例如,60和24的公约数有1、2、3、4、6、12,其中最大的是12,因此最大公约数为12。以下提供一种较为简单的方法求解最大公约数和最小公倍数,适合刚学C语言的初学者。例如,12和18的公倍数有36、72等,所以最小公倍数为36。定义:多个整数的公倍数中最小的一个。
2025-05-14 09:15:06
353
原创 十天学会C语言(day 3)
循环体执行完毕后,再次对循环条件进行判断,若条件仍然为真,继续执行循环体,如此反复,直到循环条件表达式的值变为假(零)时,循环结束,程序继续执行 while 循环后面的代码。1.执行过程是,首先执行 do 后面的循环体代码块,执行完毕后,对 while 后面的循环条件表达式进行求值,如果条件表达式的值为真,则继续执行循环体;是一种重要的选择结构,主要用于多分支选择的场景。1.在执行 while 循环时,首先对循环条件表达式进行求值,如果条件表达式的值为真(非零),则执行循环体中的代码;
2025-05-13 18:40:17
2043
原创 十天学会C语言(day 2)
使用时,在命令终端(cmd)中通过 cd 指令切换到代码所在文件夹,利用 “gcc 源文件 -o 生成程序名” 指令进行编译和运行,例如 “gcc test.c -o pro”。在处理字符混合输入时,要特别注意输入控制流程,因为字符输入可能会受到缓冲区残留字符的影响,导致输入结果不符合预期,通常可以在读取字符前使用getchar()函数清理缓冲区。可通过%-m.nf格式指定位数,m表示输出字段宽度(包含小数点),n表示小数位数,-表示左对齐,如printf(“fnum = %-8.2f”, fnum)
2025-05-12 10:04:17
1695
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅