![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
链表
链表
千叶真尹
这个作者很懒,什么都没留下…
展开
-
leetcode链表2两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 示例 2: 输入:l1 = [0], l2 = [0] 输出:[0] 示例 3: 输入:l1 = [9,9,9,9,9,9,原创 2022-01-30 17:04:12 · 91 阅读 · 0 评论 -
单链表翻转
之前写过一个单链表翻转的题,但是当时自己对翻转的过程还是一知半解,现再次记录下自己新的理解。 循环代码中,一共有四行 第一行是为了存储next元素的值,因为下一步操作改方向,会让next元素这个值找不到位置了 第二行是为了换方向,指明 cur.next 指向哪里 第三行和第四行是为了换位置,需要找下一回他们坐在哪里。 注意到此时 cur 位置已经找到了(小板凳做好了),就是此时 next 的位置,所以要想给 pre 找位置,而下一回 pre 的位置在 cur,所以 先 pre = cur,给原创 2022-01-20 15:39:46 · 195 阅读 · 0 评论 -
leetcode栈剑指 Offer 06从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 思路:用栈的思想,先进后出 先遍历一遍链表,将元素添加进栈中 然后从栈顶开始,依次弹出元素,存储到数组中 class Solution { public int[] reversePrint(ListNode head) { Stack<ListNode> stack = new Stack<ListNode原创 2022-01-19 11:06:19 · 165 阅读 · 0 评论 -
leetcode哈希表202快乐数
编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果 可以变为1,那么这个数就是快乐数。 如果 n 是快乐数就返回 true ;不是,则返回 false 。 示例 1: 输入:n = 19 输出:true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1 示例 2:..原创 2022-01-12 15:44:51 · 173 阅读 · 0 评论 -
leetcode链表206反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 思路:假设原来是1→2→3→∅,需要变成∅←1←2←3 定义一个预先节点pre=null,和一个当前节点cur=head 每一个循环,需要做如下的事: 1.保存当前节点下一节点变量的值next 2.将当前节点cur下一个.原创 2021-12-15 09:10:32 · 379 阅读 · 0 评论 -
leetcode链表203移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 示例 2: 输入:head = [], val = 1 输出:[] 示例 3: 输入:head = [7,7,7,7], val = 7 输出:[] public class removeelements { public Li.原创 2021-12-13 11:47:38 · 228 阅读 · 0 评论 -
leetcode链表83删除排序链表中的重复元素
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输出:[1,2,3] 注意: 1.开头的 head == null 判断 2.为什么返回是 head : head只是用来标记这个链表的头节点地址,cur循环之后发生的修改,这个链表也就发生了修改。返回head也就是返回这个链表了。原创 2021-12-07 14:35:21 · 262 阅读 · 0 评论 -
链表学习之单链表的创建与遍历
1.定义javabean类,成员变量,构造方法,重写toString() 方法 public class HeroNode { private int no; private String name; private String nickname; public HeroNode next; public HeroNode() { } public HeroNode(int no, String name, String nickname)原创 2021-12-07 11:02:52 · 115 阅读 · 0 评论 -
leetcode链表21合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 = [], l2 = [] 输出:[] 示例 3: 输入:l1 = [], l2 = [0] 输出:[0] 目前对链表存在的几个疑问: 1.为什么要ListNodecur=listNode; 进行这样一个操作? 2.为什么是 returnlistNode.ne...原创 2021-12-06 16:28:03 · 316 阅读 · 0 评论 -
leetcode链表19删除链表的倒数第 N 个结点(待补充)
给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出:[1] /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode..原创 2021-12-01 14:39:43 · 156 阅读 · 0 评论 -
leetcode链表876链表的中间节点
给定一个头结点为 head的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next =.原创 2021-11-30 16:32:16 · 53 阅读 · 0 评论