![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣算法题学习笔记(自用)
文章平均质量分 91
放下华子我只抽RuiKe5
代码如诗,逻辑如词,用指尖编制世界的模样。
展开
-
力扣算法题:34、在排序数组中查找元素的第一个和最后一个位置.java版
34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]原创 2023-09-30 21:23:08 · 227 阅读 · 0 评论 -
力扣算法题:35、搜索插入位置.java版
这道题目是要求在给定的排序数组中,使用二分查找的算法找到目标值的索引,如果目标值不存在,则返回它将被插入的位置。总结一下解题思路和步骤:定义两个指针i和j,分别指向数组的首部和尾部。使用while循环,在满足i原创 2023-09-28 12:00:07 · 264 阅读 · 0 评论 -
代码随想录—力扣算法题:07.链表相交. Java版(示例代码与导图详解)
这段代码的主要功能是找到两个链表的交点。首先,它通过遍历链表来获取链表A和链表B的长度。然后,如果链表B的长度大于链表A的长度,它会交换这两个长度,并交换相应的头节点。接着,它会计算两个链表的长度差,并根据这个长度差从链表A的末尾向前移动相应的节点,使得链表A和链表B在同一起点上。最后,它会遍历链表A和链表B,一旦找到相同的节点,就立即返回该节点。如果遍历完两个链表都没有找到交点,它将返回null。while(curA!while(curB!原创 2023-09-23 20:24:26 · 121 阅读 · 0 评论 -
代码随想录—力扣算法题:24两两交换链表中的节点.Java版(示例代码与导图详解)
定义一个Solution类,其中包含了一个swapPairs方法,该方法用于交换给定链表中的每两个相邻节点。代码通过引入一个虚拟头结点dummyhead来简化操作。 在方法体内,建立了一些临时节点,用于保存当前节点、下一个节点和后续节点。然后,通过三个步骤实现交换节点的操作:步骤一将当前节点指向下一个节点,步骤二将下一个节点指向当前节点,步骤三将当前节点指向原来的后续节点。循环遍历链表直到当前节点或下一个节点为空。ead来简化操作。原创 2023-09-03 14:42:46 · 155 阅读 · 0 评论 -
代码随想录—力扣算法题:19删除链表的倒数第N个节点.Java版(示例代码与导图详解)
该方法用于从给定的链表中删除倒数第n个节点。head 链表的头节点:传入链表的头节点。n 倒数第n个节点:要删除的节点在链表中的倒数位置。return 删除节点后的链表头节点:返回处理后的链表头节点。首先,创建一个虚拟节点(dummyNode)作为链表的头节点,并将其指向传入的链表头节点。接下来,创建两个指针,fastIndex和slowIndex,初始值都指向虚拟节点(dummyNode)。使用fastIndex指针先移动n个节点,这样快慢指针之间就相差n个节点。接下来,同时移动。原创 2023-09-02 14:55:16 · 121 阅读 · 0 评论 -
代码随想录—力扣算法题:206反转链表.Java版(示例代码与导图详解)
双指针法是通过迭代遍历链表来实现反转,它使用两个指针来改变指针的指向。递归法是通过递归函数实现反转,它将链表分为头节点和剩余部分,并递归翻转剩余部分。双指针法的空间复杂度为O(1),递归法的空间复杂度为O(n)。在实际应用中,根据具体情况选择双指针法或递归法来实现链表的反转。对双指针中的代码进行编写测试类,用于试运行:// 初始化前一个节点为null// 初始化当前节点为头节点// 用于保存下一个节点的临时变量while (cur!= null) {// 保存下一个节点。原创 2023-08-20 17:09:31 · 145 阅读 · 0 评论 -
代码随想录—力扣算法题:707设计链表.Java版(示例代码与导图详解)
创建一个新的节点,将值设置为val。如果链表为空,即链表的头节点为null,将链表的头节点指向新节点。新节点成为链表的唯一节点。如果链表不为空,找到链表的最后一个节点。从头节点开始遍历链表,通过next指针逐个访问节点,直到找到最后一个节点。将最后一个节点的next指针指向新节点,将新节点插入到链表的最后一个位置。针对这个题目,可以使用一个单链表的数据结构来实现所需的功能。首先,需要定义一个链表节点的类,节点包含一个值和一个指向下一个节点的指针。get(index)原创 2023-08-18 17:12:53 · 204 阅读 · 0 评论 -
代码随想录—力扣算法题:203移除链表元素.Java版(示例代码与导图详解)
接下来说一说链表的定义。链表节点的定义,很多同学在面试的时候都写不好。这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。而在面试的时候,一旦要自己手写链表,就写的错漏百出。// 单链表节点类int val;// 节点上存储的元素// 指向下一个节点的指针// 节点的构造函数val = x;//下面便是测试上面的单链类实现// 创建链表// 构建节点之间的连接关系// 打印链表元素。原创 2023-08-15 22:21:43 · 118 阅读 · 0 评论 -
代码随想录章节目录—力扣算法题系列:数组.Java版(可点击文中超链接跳转到想看的题目)
数组是非常基础的数据结构,在面试中,考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力也就是说,想法很简单,但实现起来 可能就不是那么回事了。首先要知道数组在内存中的存储方式,这样才能真正理解数组相关的面试题数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式获取到下标下对应的数据。举一个字符数组的例子,如图所示:需要两点注意的是数组下标都是从0开始的。数组内存空间的地址是连续的正是。原创 2023-08-16 15:53:34 · 127 阅读 · 0 评论