首页 > 其他分享 >Day4|24. 两两交换链表中的节点 & 19.删除链表的倒数第N个节点 & 面试题 02.07. 链表相交 &142.环形链表II

Day4|24. 两两交换链表中的节点 & 19.删除链表的倒数第N个节点 & 面试题 02.07. 链表相交 &142.环形链表II

时间:2024-07-10 18:56:56浏览次数:8  
标签:tmp 面试题 ListNode head next 链表 节点

24. 两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

输入:head = [1,2,3,4]
输出:[2,1,4,3]

这题很简单就不写思路了

public ListNode swapPairs(ListNode head) {
        ListNode dummyNode = new ListNode();
        dummyNode.next = head;
        ListNode tmp = dummyNode;
        while(tmp.next!=null&&tmp.next.next!=null){
            ListNode next1 = tmp.next;
            ListNode next2 = tmp.next.next;

            tmp.next = next2;
            next1.next = next2.next;
            next2.next = next1;
            tmp = next1;
        }
        return dummyNode.next;
    }

19.删除链表的倒数第N个节点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

思路 : 先把链表的长度size遍历出来,然后找到size-n位置的节点,把这个节点删除掉.为了把size-n位置的节点内容删掉,我只能在开头构建一个虚拟节点,这样的话size-n找到的位置就是要删除节点的前一个节点,这样方便我做指针变化的删除操作.综合来说,此题也是简单题.

代码如下:

public ListNode removeNthFromEnd(ListNode head, int n) {
        int size = getSize(head);
        int index = size - n;
        ListNode dummyNode = new ListNode(0,head);
        ListNode tmp = dummyNode;
        int i = 0;
        while(i!=index){
            tmp = tmp.next;
            i++;
        }
        tmp.next = tmp.next.next;
        return dummyNode.next;
    }

    public int getSize(ListNode head){
        int size = 0;
        while(head!=null){
            size++;
            head = head.next;
        }
        return size;
    }

面试题 02.07. 链表相交

此题目前认为官方题解有问题,还在研究中,暂不讨论

142.环形链表II

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos-1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

不允许修改 链表。

输入:head = [3,2,0,-4], pos = 1
输出:返回索引为 1 的链表节点
解释:链表中有一个环,其尾部连接到第二个节点。

其实这道题用HashSet写挺简单的,HashSet全是优点,使用了数组+Hashcode+链表+红黑树,追求极致性能,是基于数组的实现.

ListNode index = head;
        Set<ListNode> visited = new HashSet<ListNode>();
        while(index!=null){
            if(visited.contains(index)){
                return index;
            }else{
                visited.add(index);
            }
            index = index.next;
        }
        return null;

标签:tmp,面试题,ListNode,head,next,链表,节点
From: https://www.cnblogs.com/flydandelion/p/18294818

相关文章

  • 19. 删除链表的倒数第 N 个结点
    [https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/?envType=study-plan-v2&envId=top-interview-150](19.删除链表的倒数第N个结点)mid(简单)快慢指针时间复杂度O(L)空间复杂度O(1)classSolution{publicListNoderemoveNthFromEnd(ListNode......
  • 每天两道Java面试题(一)
    1、this关键字和super关键字的区别及联系this关键字用在本类中。在类的内部,可以在任何方法中使用this引用当前对象。this关键字是用来解决全局变量和局部变量之间的冲突。this()可以调用同类中重载的构造方法,并且需要放在第一行。super关键字用在子类中。在子类中可以通......
  • 【数据结构】—— 双向链表
    文章目录1、双向链表的概念2、双向链表的接口实现2.1结构2.2初始化申请节点2.3插入数据尾插头插指定位置之后插入数据2.4删除数据尾删头删指定位置删除2.5查找2.6打印2.7销毁3、链表和顺序表的区别4、问题与思考1、双向链表的概念双向链表(DoublyLinkedList)是......
  • Day3| 203.移除链表元素 & 707.设计链表 & 206.反转链表
    前两天发烧了,这几天没更的后续会补齐链表结构如下classListNode{intval;ListNodenext;ListNode(){}ListNode(intval){this.val=val;}ListNode(intval,ListNodenext){this.val=val;this.next......
  • ES相关面试题
    题目:全文搜索对应的是什么功能,怎么构建索引,查询的时候怎么查怎么构建倒排索引,使用MySQL可以实现倒排索引的功能吗前情提要:我的项目中的商城项目中存在使用ElasticSearch的情况,所以特地弄了此篇来应对提问,以及还有一个爬虫项目中也使用到了questionOne全文搜索......
  • 蓝队初级常见面试题目
    内网模块内网渗透思路(1)目标:对目标服务器所在的内网资源进行渗透最终获取域控制权限的过程(域控制权限可以控制内网中所有的用户和设备);管理员以一台主机作为域控制器,将内网中其余主机加入到域控当中,那么这台域控制器就可以控制其余的所有主机;所以内网的渗透最终目的就是拿下与控制......
  • HIVE面试题
    HIVE优化:场景1.分组聚合groupby导致数据倾斜--map端聚合:aggr=true会在mapper端先groupby一次,最后再把结果merge起来,为了减少reducer处理的数据量指令:Sethive.groupby.mapaggr.checkinterval=1000000Sethive.map.aggr=truesethive.groupby.skewindata=true;......
  • 141. 环形链表
    给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从0开始)。注意:pos 不作为参数进行传递 。仅仅是为......
  • 数据结构--单向链表篇(python实现)
    写在开头链表(Linkedlist)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)链表的优缺点优点不需要预先知道数据大小,实现灵活的内存动态管理插入、删除指定数据速度快缺点读取指定位置数据速......
  • 138. 随机链表的复制
    138.随机链表的复制递归和哈希表时间&空间复杂度O(n)复杂链表的特点是每个节点除了有一个指向下一个节点的指针外,还有一个随机指针可能指向链表中的任意节点或null。通过递归和哈希表的方式,能够确保每个节点只被复制一次,并且正确地复制了next和random指针。/*//Definitionf......