- 博客(15)
- 收藏
- 关注
原创 【C语言】矩阵算法
空间优化:优先复用现有空间(如矩阵置零的首行首列标记),减少额外内存开销。边界控制:明确遍历或操作的边界条件,避免越界或重复处理(如螺旋矩阵的边界收缩)。有序性利用:若矩阵具备行 / 列有序性,优先用双指针或二分法优化时间复杂度(如搜索二维矩阵 II)。分治与分层:复杂矩阵操作可拆解为分层 / 分步处理(如旋转图像的分层旋转),降低逻辑复杂度。
2026-03-09 18:41:15
337
原创 【java】Io流
本文全面解析Java IO流,从基础概念到高级应用。首先介绍File类作为操作文件/文件夹的基础,强调其只能管理文件本身而非内容。IO流按数据流向和处理单位分为输入/输出流、字节/字符流等,高级流通过装饰者模式增强功能。File类使用需掌握路径创建(绝对/相对路径)、常用方法(判断、获取、创建删除、遍历)及递归操作。示例代码展示了文件遍历的实现,强调跨平台路径处理的注意事项。学习IO流需明确类型、适用场景和核心方法,本文系统梳理了这些关键知识点。
2026-03-08 18:42:34
167
原创 移动应用开发实验室大一上考核
本文介绍了三个算法问题及其解决方案: 二叉树前序遍历:通过递归法(根→左→右顺序)或迭代法(使用栈模拟递归)实现; 用栈实现队列:利用双栈分工(输入栈接收元素,输出栈反转顺序)实现队列的先进先出特性; 无重复字符的最长子串:采用滑动窗口和哈希表结合的方法,动态维护无重复字符的窗口并记录最大长度。 三种算法均通过优化数据结构操作提升效率,适用于不同场景的遍历与查询需求。
2025-12-14 15:05:49
825
原创 【C语言】大、小根堆的数组实现
本文介绍了堆数据结构的基本概念与应用,重点讲解了大根堆和小根堆的实现原理及核心操作。大根堆通过完全二叉树实现父节点最大的特性,核心操作包括向上调整(插入)和向下调整(堆化)。文章通过LeetCode 347题"前K个高频元素"的实战案例,展示了小根堆在优化算法效率中的关键作用:通过维护大小为K的小根堆,将时间复杂度从O(nlogn)优化到O(nlogK)。代码实现部分详细演示了哈希表预处理和小根堆的具体操作,包括插入、删除和调整等核心功能,为处理类似问题提供了实用参考。
2025-11-27 22:12:21
643
原创 【C语言】链式哈希表
哈希表是一种高效的键值对存储结构,通过哈希函数将键映射为固定范围的索引,实现O(1)时间复杂度的快速查找、插入和删除。其核心优势在于相比数组和链表的线性查找效率更高。哈希冲突通过链式哈希表的拉链法解决,即每个索引对应一个链表存储冲突元素。本文详细介绍了哈希表的结构定义、哈希函数设计(处理负数键)、头插法插入、链表遍历查找以及内存清理的实现方法。典型应用场景包括快速查找、去重、频率统计等,并以LeetCode两数之和为例展示了哈希表优化算法效率的实际应用。哈希表的核心价值在于将"键-值"映
2025-11-27 19:37:12
984
原创 【C语言】前缀和与差分
前缀和的本质是预处理数组,通过提前计算 “从数组起始位置到当前位置的累加和”,将后续的区间和查询转化为两次前缀和的差值。为什么要学习前缀和呢?在这举个例子给定数组nums,要求查询 k 次区间[l, r]的和。暴力法:每次查询遍历 l 到 r,累加求和,时间复杂度 O (knknkn如果 k=1e51e51e5、n=1e51e51e5,总操作量1e101e101e10,直接超时。前缀和:预处理前缀和数组(O (nnn)),每次查询 O (111。
2025-11-23 14:16:47
596
原创 【C语言】回溯
回溯算法是一种通过"暴力枚举+剪枝"解决问题的试错法,其核心在于递归枚举所有可能路径,当发现不满足条件时撤销上一步选择并尝试其他路径。算法遵循"做选择→递归→撤销选择"的循环模式,通过横向for循环枚举选项和纵向递归深入搜索。关键步骤包括:初始化路径和结果集、递归搜索(满足条件时保存结果)、回溯撤销选择。剪枝优化是提高效率的重点,通过提前终止无效路径减少不必要的递归。典型应用如组合问题中,通过控制start参数避免重复选择,并利用数学关系确定i的上限来确保剩余数字足够
2025-11-22 16:48:00
700
原创 【C语言】单调栈
本文介绍了单调栈的原理和应用,通过C语言实现演示了其高效处理特定问题的能力。单调栈分为递增栈和递减栈,用于快速查找元素左右边界。文章详细讲解了两个经典例题:每日温度问题(寻找下一个更高温度的天数)和柱状图最大矩形问题(计算最大矩形面积),并提供了完整的代码实现。通过维护栈内元素的单调性,单调栈将时间复杂度从O(N²)优化到O(N),是解决特定类型问题的有效工具。最后总结了单调栈的适用场景和使用口诀。
2025-11-22 00:19:29
880
原创 【C语言】反转链表的五种实现方法
本文详细介绍了反转链表的五种实现方法:1)双指针迭代法通过保存临时节点避免断链;2)头插法利用虚拟头节点简化操作;3)栈辅助法利用栈的LIFO特性实现逆序;4)递归法通过分解子问题逐步反转;5)双向链表模拟法借助辅助数组存储前驱节点。这些方法时间复杂度均为O(n),空间复杂度从O(1)到O(n)不等,适用于不同场景,为面试提供了多种解题思路。
2025-11-13 00:00:51
369
原创 【C语言】栈与队列
本文介绍了栈和队列两种线性表的数据结构及其实现方式。栈是后进先出(LIFO)结构,通过数组和链式两种方式实现,包含初始化、压栈、出栈等基本操作。队列是先进先出(FIFO)结构,同样采用数组实现,详细说明了初始化、入队、出队操作,并指出"假满"问题及解决方法。两种数据结构均通过指针操作实现元素存取,其中栈顶/队尾指针的移动是关键操作。本文提供了完整的C语言实现代码和示意图,帮助理解这两种基础数据结构的工作原理。
2025-11-11 19:00:39
735
原创 【C语言】文件操作
本文介绍了C语言文件操作的核心概念和基本用法。主要内容包括:1)文件操作函数fopen的声明解析,涉及返回类型FILE*、调用约定__cdecl和参数标记_In_等语法;2)文件操作的本质是数据在硬盘、内存和缓冲区之间的搬运过程;3)详细讲解了fopen函数的三种模式(rb读取、wb写入、ab追加)及其适用场景;4)通过实例演示了fwrite函数的使用方法,包括参数说明和写入文本/二进制数据的注意事项。文章通过具体代码示例展示了如何创建文件、写入内容以及追加数据,并比较了strlen与sizeof在文件写入
2025-11-04 17:41:05
770
原创 【C语言】双指针法相关思路
双指针类型移动特点核心功能典型应用时间复杂度优化同向双指针同起点、同方向处理区间问题(滑动窗口)、原地修改最小子数组和、数组去重On2)→On相向双指针两端出发、向中间移动找元素对、反转、判断回文两数之和(有序)、三数之和、反转数组On2)→On快慢双指针同起点、不同速度定位链表特殊位置、检测环链表环检测、中点、倒数第 k 个元素On)(比单指针更简洁)简单来说,双指针的本质是 “用两个指针代替嵌套循环,通过协同移动快速定位目标”。
2025-10-28 21:41:17
681
原创 【C语言】二分法---二分查找/二分答案
本文介绍了二分查找和二分答案两种算法。二分查找用于在有序序列中快速定位目标值,详细讲解了左闭右闭和左闭右开两种区间的实现方法,包括边界条件处理和代码示例。二分答案法适用于在有序解空间中寻找最优解,通过判断函数验证中间值的可行性,逐步缩小范围。文章以具体问题为例,展示了如何确定解的范围、构造判断函数以及二分查找最小除数的完整过程,并提供了C语言实现代码。两种算法都体现了分治思想,能高效解决特定类型的问题。
2025-10-27 19:10:51
423
原创 带头结点的单链表基础操作(C语言版)
数据域(data):存储实际业务数据(如整数、字符串、结构体等);指针域(next):存储下一个节点的内存地址,相当于“链条”,将分散的节点串联成一个整体。与数组相比,链表的存储单元可以是不连续的——这意味着它无需提前申请大块连续内存,数据新增时动态分配内存即可,极大提升了内存利用率。创建一个数据域data来存储数据创建一个指向目标类型的指针next来存储后继结点的地址,实现连接操作int data;}Node;
2025-10-27 16:06:06
1384
原创 大小端的意义及判断
核心定义大端(Big-Endian):高位字节存低地址。内存地址从低到高(符合人类阅读习惯,先读高位)。小端(Little-Endian):低位字节存低地址。内存地址从低到高(更符合 CPU 底层运算逻辑,效率更高)。大小端的实际意义跨设备数据传输:网络传输默认用大端(网络字节序),而 PC(x86/x86_64)、手机(多数 ARM)默认是小端,若不转换会导致数据解析错误(如把 0x1234 读成 0x3412)。
2025-10-26 18:39:15
377
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅