- 博客(9)
- 收藏
- 关注
原创 一道股票题,为什么面试官能问出五六种变体?
这篇文章探讨了股票买卖问题的多种解法及其思维演变过程,从暴力枚举到贪心策略,再到动态规划状态机框架。重点分析了LeetCode经典题目121(单次交易)和122(无限次交易),展示了不同解法的适用场景和局限性。 文章指出,暴力法虽正确但效率低,贪心法在无限交易条件下高效但对其他变体无效,而DP状态机则是通用框架,通过调整状态转移方程可适配各种变体题目(如手续费、冷冻期、交易次数限制等)。面试官青睐这类题目正是因为它们能通过简单条件修改考察候选人的算法思维深度。 文章强调算法思维的进化路径:从暴力验证到针对性
2026-06-16 23:46:47
718
原创 探索顺序表与动态数组的实现奥秘
本文详细介绍了顺序表(动态数组)的实现过程,从数据结构设计、错误处理机制到核心操作的实现。作者以C语言为例,展示了如何构建一个具有自动扩容能力的顺序表,重点讲解了初始化、销毁、插入、删除等关键操作的设计思路和优化技巧。文章特别强调了内存管理的安全性、错误处理的规范性和算法效率的优化,如使用memmove而非memcpy处理重叠内存区域,以及采用双指针法高效删除指定元素等实用技巧。通过完整的代码示例和详细的注释,帮助读者深入理解顺序表的工作原理和实现细节。
2026-06-15 06:00:00
513
原创 Linux 学习笔记(二):文件系统、常用命令与 vim 入门
本文总结了Linux学习的基础知识,重点包括:1)Linux与Windows的核心差异在于交互方式;2)Linux文件系统的树形结构和常见命令;3)vim编辑器的三种模式及基础用法;4)开发环境搭建常用命令;5)初学者常见问题及解决方法。文章强调Linux以命令行为主、赋予开发者完全控制权的特点,建议通过实践掌握基础操作,为后续开发学习打下基础。关键学习路径涵盖文件管理、开发环境、进程管理、网络编程等核心模块。
2026-06-09 22:54:38
493
原创 小数浮点数在内存里到底长啥样?
0.1 + 0.2 怎么就不等于 0.3 了?这篇文章从这道经典面试题切入,拆解 float 的 32 位内存结构,讲透 S-E-M 三段式是什么、指数 E 为什么加中间值 127、尾数 M 如何白嫖一位精度。清楚了规则,精度问题就不再是玄学——23 位装不下无限循环小数,只能截断。最后,一个把 int 9 读出 float 0.000000 的实验,让你彻底弄懂“二进制不变,解读规则变”的底层逻辑。
2026-06-04 10:00:00
759
1
原创 面试必问!!!:整数在计算机中是怎么保存的?
本文深入解析了C语言中整数的存储机制和类型转换规则,主要内容包括: 整数类型分类:详细介绍了有符号和无符号整数家族各类型的大小、存储结构和表示范围,特别指出long类型在不同平台下的差异。 补码原理:重点讲解了负数在内存中以补码形式存储的计算过程(原码→反码→补码),以及补码设计的优势(统一加减法运算)。 大小端存储:对比了大端和小端两种字节序的存储方式,说明不同CPU架构下的差异,并提供验证方法。 类型转换规则: 大转小:截取低字节 小转大:按符号位或零扩展 有符号/无符号转换:二进制位不变,解释方式改变
2026-06-03 00:08:45
763
1
原创 比插排快30倍:快速排序从原理到实战
本文通过"分水果"的生动比喻,深入讲解了快速排序的分治思想与实现细节。文章首先用直观的篮子分拣过程解释快排原理,随后给出完整的C语言实现代码,包括关键的分区函数和递归排序逻辑。作者分享了多个调试中遇到的典型问题(如指针初始化、递归边界条件等)及解决方法,并通过统一测试框架对比了插入排序与快速排序的性能。实测数据显示,快速排序在处理10,000量级数据时比插入排序快约30倍,验证了其O(n log n)的优越时间复杂度。文章采用生活化语言降低理解难度,适合算法初学者循序渐进掌握这一经典排序算法。
2026-06-02 11:39:27
672
原创 排序算法进阶:时间复杂度、稳定性与性能实测对比
本文深入分析冒泡、插入和选择排序的性能特点,通过理论分析和实测对比得出以下结论:时间复杂度上,三种排序均为O(n²),但插入排序对部分有序数据效率较高。稳定性方面,冒泡和插入排序稳定,而选择排序不稳定。实测数据显示,在不同数据规模下插入排序表现最优(10000数据量仅需60.47ms),选择排序次之(86.39ms),冒泡排序最慢(308.05ms)。建议根据数据特性选择排序算法:小规模数据可选择简单实现,部分有序数据优先使用插入排序,若需减少交换次数可考虑选择排序,但对稳定性有要求时应避免选择排序。
2026-06-01 00:04:26
964
原创 C语言实现三种经典排序算法(冒泡/选择/插入)
本文详细介绍了C语言中三种经典排序算法(冒泡排序、选择排序和插入排序)的实现。通过代码示例展示了升序和降序版本的冒泡排序,并分析了每种算法的核心思想、实现细节和易错点。文章包含详细的代码注释,并提供了完整的测试代码框架,帮助初学者理解排序算法的工作原理。作者还分享了在学习过程中遇到的问题及解决方法,特别适合算法入门者参考学习。这三种算法虽然时间复杂度均为O(n²),但作为基础排序方法,对理解更复杂算法具有重要意义。
2026-05-29 23:59:23
369
原创 Linux 学习笔记(一):环境搭建与 C 语言开发初体验
作为一名数据科学与大数据技术专业的大一学生,我正式启动了 Linux 系统的学习计划。本系列博客将记录我从零开始学习 Linux 的完整过程,包括命令操作、C/C++ 开发、系统编程等内容。这是第一篇,主要分享 WSL Ubuntu 环境的搭建,以及用 vim 编写并运行第一个 C 程序的全过程。
2026-05-28 22:59:41
479
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅