[算法训练营day4]LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表II LeetCode24. 两两交换链表中的节点 题目链接:24. 两两交换链表中的节点 初次尝试 比较暴力的解法,利用三个指针,进行类似反转链表里面的反转next指针指向的操作,然后三个指针整体向后移动到下一组节点,暴力但是ac. /** * Definition for singly-link…
24. 两两交换链表中的节点 题目链接:24. 两两交换链表中的节点 题目描述:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例 2: 输入:head = [] 输出:[] 思路 两两交换节点的重要点在于判断while循环里面的条件,以及cur临时指针应该直向何处? 因此画图理解cur指针的指向以及每一步骤: 拉直后的图像: 由上图知 步骤一…
题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists-lcci/ 给定两个(单向)链表,判定它们是否相交并返回交点.请注意相交的定义基于节点的引用,而不是基于节点的值.换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5]…
目录 leetcode面试题 02.06. 回文链表,解题心路 1.题目描述 2.java语言题解一 3.java语言题解二 4.C语言题解一 leetcode面试题 02.06. 回文链表,解题心路 1.题目描述 编写一个函数,检查输入的链表是否是回文的.如图: 试题链接:https://leetcode-cn.com/problems/palindrome-linked-list-lcci/ 2.java语言题解一 看到该题,首先想打到的就是使用自己最拿手的语言java来做.首先,我们先来观…
面试题 02.02. 返回倒数第 k 个节点 方法一:使用外部空间 // 执行用时: 1 ms , 在所有 Java 提交中击败了 16.75% 的用户 // 内存消耗: 36.8 MB , 在所有 Java 提交中击败了 31.02% 的用户 class Solution { public int kthToLast(ListNode head, int k) { // 朴素的想法是用额外空间记录链表的值 // 因为k都是有效的,所以不会出现越界的情况 List<Integer> list…
写在前面,csdn的那篇同名博客就是我写的,我把它现在在这边重新发布,因为我实在不想用csdn了,那边的广告太多了,还有就是那个恶心人的“阅读更多”按钮,惹不起我躲得起. 最近面试的过程中,发现有的公司的面试题考到了链表的逆序,这一块我正好不是特别清楚.于是打算把链表这一块好好的学习学习.在网上搜寻了众多的资料以后,了解到链表的核心是节点与节点之间的互相链接. 于是自己也写了一个单向链表的类,里面包括input插入方法,inputById按指定下标插入方法,deleteAll删除所有节点方法,d…
题目描述 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0).从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 […
面试题 01.07. 旋转矩阵 给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节.请你设计一种算法,将图像旋转 90 度. 不占用额外内存空间能否做到? 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], [9,6,3] ] 示例 2: 给定 matrix = [ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3, 6, 7], [15…
01.import java.util.HashMap; 02.import java.util.Scanner; 03.import java.util.Stack; 04. 05./** 06. * 07. * @author kerryfish 08. * 关于java中链表的操作 09. * 1. 求单链表中结点的个数: getListLength 10. * 2. 将单链表反转: reverseList(遍历),reverseListRec(递归) 11. * 3. 查找单链表中的倒数…
如何判断单链表是否存在环 方法一.穷举遍历方法一:首先从头节点开始,依次遍历单链表的每一个节点.每遍历到一个新节点,就从头节点重新遍历新节点之前的所有节点,用新节点ID和此节点之前所有节点ID依次作比较.如果发现新节点之前的所有节点当中存在相同节点ID,则说明该节点被遍历过两次,链表有环:如果之前的所有节点当中不存在相同的节点,就继续遍历下一个新节点,继续重复刚才的操作. 例如这样的链表:A->B->C->D->B->C->D, 当遍历到节点D的时候,我们需要比较的是之…