自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 递归经典例题

从数组最后一个往前插入排序,对数组排序等价于对0-倒数第二个元素这部分排序,再把最后一个元素插进去。// 输出结果:1 1 2 3 5 8 13 21 34 55。// 递归公式:F(n) = F(n-1) + F(n-2)//将N个盘子从source移动到target的路径的打印。// 边界条件:第1项和第2项均为1。// 测试:输出前10项斐波那契数列。根据参数变化的趋势,对边界进行控制,适时终止递归。N:初始的N个从小到达的盘子,N是最大编号。// 递归求斐波那契数列第n项。3.递归进行插入排序。

2025-10-26 22:41:55 400 1

原创 位运算题5:出现k次与出现1次

②创建二维数组kRadix存放每个数的k进制,一行为一个数的k进制,行数为arr内元素的个数。方法一:k个k进制的数不进位相加等于0,如二进制110+110,不进位相加等于0。方法二:哈希表,键k→数据元素,值v→出现次数,出现一次v就加一。③对每个数字k进制字符串翻转,转为字符数组。④创建一维数组resArr存放每一列的和。①创建数组arr存放数据。

2025-10-09 22:48:32 327

原创 位运算题4:0~1之间浮点实数的二进制表示

【代码】位运算题4:0~1之间浮点实数的二进制表示。

2025-10-03 11:17:55 121

原创 位运算题3:将整数奇偶位互换

步骤一:和0101 0101作与&运算得a。步骤二:和1010 1010作与&运算得b。步骤三:a又移一位和b左移一位作异或运算。

2025-10-02 22:35:45 132

原创 位运算题2:求二进制中1的个数

方法一:把1和数N的二进制每位从左到右依次比对,1依次向左移一位,和N作&与运算,如果结果和1移位之后的值相等,则改位是1,count++方法二:将二进制数N依次向右移位 ,每次和1作与运算,如果结果等于1,则最后一位是1,count++方法三: 把(N-1)和N作与运算,作一次消掉一个1,消掉最后一个1结果为0,没消一次count++

2025-09-25 20:14:11 200

原创 位运算解题1:找数组中唯一成对的那个数

1000],如果将这1001个数互相异或,1^2^……1000,那么重复的数k将被消掉,找不出重复的数,取不重复数组[1^2^^1000]和[1^2^1000]异或,那么所有的数将和自己异或被消掉,除了k(三个k异或后等于k)方法二:开辟辅助空间,创建一个相同大小的数组,便利第一个数组,将第一个数组的值作为第二个数组的下标,第二个数组加一,最后在第二个数组中找到值为2的下标,改下标则为重复数字。首先要知道:A^A=0、A^0=0、A^A^B^C^C=0。注:最后交换部分可以不写。步骤二:把两部分异或起来。

2025-09-24 23:22:01 246

原创 IO流知识点总结

第一,操作单位不同,字节流是字节(8 bit),字符流是字符(16 bit)。它们是字节流通向字符流的桥梁,可以在读的时候把字节转换成字符,或者在写的时候把字符转换成字节。第一,使用了try-with-resources语法,这是Java7的特性,可以自动关闭流,避免了繁琐的finally块和手动close操作。第三,读取时使用了while循环和len变量,确保写入的是实际读取到的长度,避免最后一次读取可能产生的垃圾数据。2. 必须掌握缓冲流的原理和优势,并能写出高效的文件复制代码。和它们的那些实现类。

2025-09-06 21:12:48 512

原创 Java异常处理必考点!

面试官会问:什么时候需要自定义异常?答:当Java标准库中的异常类型都无法明确描述我们业务中遇到的错误时,就需要自定义异常。怎么自定义?非常简单,一般继承Exception(受检异常)或者RuntimeException(运行时异常)就可以了。// 自定义一个业务异常,继承RuntimeException,是非受检异常// 无参构造super();// 带错误信息的构造// 带错误信息和起因的构造(推荐,便于排查问题)

2025-09-06 20:55:49 946

原创 一口气搞定Stream流!

1. 说说你对Stream的理解?(特点、三步曲)2. 常用的中间操作和终止操作有哪些?(filter, map, collect, forEach 必须会)3. map和forEach有什么区别?map是中间操作,用于转换元素,返回一个新流。forEach是终止操作,用于消费元素,不返回值。4. filter之后为什么要跟着collect?(因为filter是中间操作,需要终止操作来触发执行)5. Stream流和集合的区别?集合是存储数据的容器,关注的是数据本身。

2025-09-06 20:44:50 689

原创 搞定TreeMap!

1. 底层结构:红黑树。为什么是红黑树?(保证平衡和性能)2. 核心特性:有序。怎么实现有序?(两种排序方式:自然排序和定制排序)3. 比较器(Comparator):必考!一定要会写,会分析复杂的比较逻辑。4. Key的要求:必须可以比较(实现Comparable或提供Comparator),不允许null键。5. 与HashMap的区别:从数据结构、有序性、性能、null值支持等方面对比。(超级高频)6. 适用场景:什么时候用HashMap?什么时候用TreeMap?

2025-09-06 20:24:11 692

原创 吃透HashMap!

主要体现在两个方面:1. 扩容导致死循环(JDK1.7及之前):在多线程环境下同时扩容,链表上的元素转移时可能会形成环形链表,导致后续在get的时候陷入死循环。JDK1.8已经修复了这个问题,但依然有其他问题。2. 数据覆盖:如果两个线程同时put,并且计算出的哈希桶位置一样,可能会导致一个线程的put数据被另一个覆盖掉。那想要线程安全用什么?

2025-09-06 20:17:48 827

原创 Java时间API

但它从设计上就有很多坑,比如年份是从1900年开始算的,月份是从0开始的(0代表一月,11代表十二月),这反人类的设计导致代码非常容易出错。面试官问你时间类的问题,就按照这个思路来:先说老API的缺点(特别是线程安全问题),然后重点阐述新API的优点和核心类的用法,再结合一两个小例子,绝对能让面试官觉得你基础扎实,理解透彻!本质上没区别,但Instant的API更丰富,是OO的风格。Java8的 `java.time` 包彻底解决了老API的所有问题,它是不可变的(线程安全)、设计清晰、API丰富。

2025-08-24 21:57:32 419

原创 正则表达式

答:因为`.`是元字符(匹配任意字符),应该用`split("\\.")`2. Pattern+Matcher(复杂操作专用)题1:String的split(".")为什么失效?1. String类的快捷方法(适合简单匹配)3. 替换敏感词(把"996"换成"福报")五、贪婪模式 vs 懒惰模式(笔试高频坑)1. 校验数据格式(手机号/邮箱是否合法)2. 提取文本内容(从日志抓取IP地址)1. 分组提取(案例:提取年月日)3. 反向引用(匹配重复单词)2. 字符类(匹配一类字符)3. 量词(控制匹配次数)

2025-08-22 18:37:39 900

原创 Java多态:面试必考核心解析

3. 向上转型:父类引用指向子类对象(Animal a = new Cat())a.show() → B.show(方法调用看右边对象!1. 继承关系:必须有父子类(如Cat extends Animal)2. 方法重写:子类必须重写父类方法(@Override标注)考点:静态方法属于类,不存在重写!答案:Derived(多态方法调用看实际对象类型!考点:多态只针对方法,成员变量不存在重写!问题1:多态中为什么子类方法会覆盖父类?例题1:成员变量 vs 方法调用。问题2:构造方法能多态吗?

2025-08-21 20:47:36 380

原创 面向对象:标准的javabean类

4.针对每个私有变量都提供set和get方法针对每个私 有变量都提供set和get方法。3.定义带全部参数的有参构造(若成员变量和局部变量名字一样,成员变量前加this.)步骤:File➩setting➩pluging➩搜索PTG➩install。回到代码页面,右击鼠标➩PTG To Javabean。1. 定义属性,注意封装思想,前面加private。2. 空参构造 public 方法名 () {}三.插件PTG,一秒生成javabean★★。自动生成 空参、全参构造,get,set方法。

2025-04-22 20:15:00 364

原创 二叉树:从存储到遍历,一篇解决竞赛笔试高频考点

N叉树遍历(LeetCode 589):递归或迭代扩展子节点。1. 凡是层次遍历:用队列,记层大小(`levelSize`)。- 递归:O(h),h 为树高(最坏 O(n))。- 根节点下标为 `0`(或 `1`,依习惯)。- 节点 `i` 的左孩子:`2*i + 1`。- 节点 `i` 的右孩子:`2*i + 2`。- 技巧:前序/后序定位根,中序分割左右子树。- 遍历四板斧:前中后序+层次,非递归必须会!- 完全二叉树验证:层次遍历+空节点标记。- 所有遍历均为 O(n),n 为节点数。

2025-03-29 20:46:06 717

原创 栈(Stack)从入门到精通:基础操作 + 竞赛高频考点解析

左程云老师总结:栈的题目,本质是逆向思维和临时存储!关注我,解锁更多数据结构“骚操作”和算法秘籍!代码+图解+高频题 = 三连收割机!

2025-03-24 23:00:28 834

原创 链表入门必刷题:反转链表 + 合并有序链表 (附左程云老师“骚操作”解析)

**LeetCode刷题**:206(反转链表)、21(合并链表)、25(K个一组反转)。- **反转链表II**:反转指定区间内的节点(左老师:“先找到前驱,再局部反转”)。- **K个一组反转链表**:每K个节点反转一次(左老师:“递归 + 迭代结合”)。- **合并K个有序链表**:分治合并或优先队列(左老师:“分治时间复杂度更低”)。- **左程云课程推荐**:《算法与数据结构体系课》- 链表章节(某站搜“左程云”)。- **迭代法**:多用虚拟头节点,避免头节点特判。

2025-03-20 19:34:40 453

原创 单链表&双链表:从入门到“放弃”?不,是到征服 (手把手教你用C语言玩转链表,顺便聊聊面试官为何总爱考这个)

**内存泄漏**:`malloc`后一定要`free`,否则面试官会“微笑”扣分!- 单链表 VS 双链表:双链表增删更快(前驱直接找),但更占内存(多一个指针)。- **手撕代码**:链表反转、合并有序链表、判断链表是否有环(快慢指针)。- **边界条件**:头节点、尾节点、空链表要特殊处理!**特点**:一根筋,只能单向找对象(节点)。**精髓**:让前任和后任直接勾搭,跳过自己!**关注我,解锁更多“头皮发麻”的算法教程!##### **1. 结构定义****头插法**:新节点总想当老大!

2025-03-19 07:23:39 1074

原创 数据结构-顺序表

/ 输出: [10, 20]insert(&list, 0, 10);// 在位置0插入10。// 在位置1插入20。// 输出: [20]delete(&list, 0);// 删除位置0的元素。// 从前往后移动元素,覆盖被删除的元素。printf("插入后的顺序表:");printf("删除后的顺序表:");// 检查删除位置是否合法。// 打印顺序表内容。

2025-03-17 22:57:15 1141 1

20250318-100220.c

20250318-100220.c

2025-03-18

空空如也

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

TA关注的人

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