- 博客(21)
- 收藏
- 关注
原创 两数之和II-
定义两个指针left和right,两数之和与target进行比较,如果大于target证明需要减小,right向右移,如果小于target证明需要增大,left向左移。这道题和两数之和的区别是,题目中多了有序数组的条件,当然也有特殊的要求:只使用常量级的额外空间。原来那种方法通过for循环进行遍历,空间复杂度为O(n)。使用双指针法会解决这个问题。
2025-01-19 10:48:43
275
原创 每日算法----有效的字母异位词
定义一个长度为26的数组,遍历第一个数组时每遍历一个字符,在对应位置+1,之后遍历第二个数组,每遍历一个字符,在对应位置-1,最后遍历数组,如果数组中有存在不等于0的,则说明不是字母异位词。
2024-12-31 10:34:56
977
原创 每日算法----环形链表II(Java)
从起点开始算a+n圈环形就是环形链表的起始节点所以,此时慢指针在加上a的长度就可以找到起始节点,可以将快指针变成头节点,每次和慢指针一样都只走一步。此时快指针走的路程是慢指针2倍。慢指针= 快指针-慢指针 = n圈环形 ,这里的n的值和上面n不一样,你们懂我意思就可以。在第一次快慢指针相等时,a是到环形前的节点个数,k是离环形节点有多远。本题在上个环形链表的基础上增加了难度,让找其环形链表的第一个节点。还是原先的思路,定义快慢指针。快指针走了a+n圈环形+k。慢指针走了a+m圈环形+k。
2024-12-29 19:18:26
617
原创 每日算法----链表相交(Java)
从这个特殊情况可以看出来,我们需要两个链表在相交前的节点个数是相同的,对于两个相交节点不同的情况,当链表A遍历完后,我们让最后一个节点指向链表B,同样的当链表B遍历完之后,我们让链表B的最后一个节点指向链表A。需要找到相交节点,特殊情况两个链表在相交前的节点个数是相同的,这种情况我们只需用两个指针同时遍历两个链表,当currA==currB时,此时就找到了相交节点。相交节点为8,前面节点数目相同,这块需要注意的是如果只是当前的值相同不可以,链表是有两个属性的,val和next同时满足才能证明链表相等。
2024-12-28 10:17:31
797
原创 每日算法----删除链表的倒数第 N 个结点(Java)
定义快慢指针,快指针先走n步,在和慢指针一起走,当快指针为空时,慢指针刚好为倒数第n个。还是需要哨兵节点 new ListNode(-1,head)
2024-12-27 10:14:10
396
原创 每日一算法----二分查找(Java)
/if (nums[middle] > target) right 更新为 middle,因为当前nums[middle]不等于target,// 因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1。// 去左区间继续寻找,而寻找区间是左闭右开区间,所以right更新为middle,即:下一个查询区间不会去。//if (nums[middle] > target) right 要赋值为 middle - 1,
2024-12-26 10:12:17
441
原创 反转链表----迭代和递归(Java)
定义了prev==null,通过不断移动prev,和curr 去实现反转(每一次赋值后,需要将当前节点赋值给prev,因为此时当前节点,就是下一个节点的上一个节点)
2024-12-25 18:27:49
385
原创 java基础核心--三大特性之一:多态
多态是面向对象编程(OOP)中的一个重要概念。它指的是同一个操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。简单来说,就是用同一种方式来调用不同对象的同名方法,但这些方法的具体实现可以因对象的类型不同而不同。
2024-12-23 15:57:12
340
原创 java基础核心--三大特性之一:继承
1. 什么是继承?是面向对象软件技术中的一个概念。它使得Java 语言是非常典型的面向对象的语言,在 Java 语言中。我们举个例子:人有不同的身份,比如说老师,学生。人会跑,老师,学生都会跑。这时学生和老师都继承人这个类,就都用有跑这个方法了。2. 为什么需要继承?如果仅仅只有两三个类,每个类的属性和方法很有限的情况下确实没必要实现继承,但事情并非如此,事实上一个系统中往往有很多个类并且有着很多相似之处,比如猫和狗同属动物,或者学生和老师同属人。
2024-12-22 21:39:00
413
原创 java基础核心--三大特性之一:封装
封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。好处:尽可能的隐藏内部的实现细节封装确实可以使我们更容易地修改类的内部实现,而无需修改使用了该类的代码封装可以对成员变量进行更精确的控制
2024-12-21 21:20:22
400
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人