92.反转链表ii-字节跳动高频题(代码片段)

hequnwang10 hequnwang10     2022-12-03     580

关键词:

一、题目描述

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

示例 1:

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]
示例 2:
输入:head = [5], left = 1, right = 1
输出:[5]

二、解题

链表拆分+合并


先找到上面四个节点值,然后preleft和leftnode断开,然后在将rightnode和nextright断开,然后将leftnode和rightnode中的链表翻转,然后在合并链表。

/**
 * Definition for singly-linked list.
 * public class ListNode 
 *     int val;
 *     ListNode next;
 *     ListNode() 
 *     ListNode(int val)  this.val = val; 
 *     ListNode(int val, ListNode next)  this.val = val; this.next = next; 
 * 
 */
class Solution 
    public ListNode reverseBetween(ListNode head, int left, int right) 
        //定义两个节点,left 的前一个节点,right的后一个节点
        ListNode dummy = new ListNode(-1);
        dummy.next = head;
        ListNode prelfet = dummy;
        //查找四个节点
        for(int i = 0;i<left-1;i++)
            prelfet = prelfet.next;
        
        ListNode leftnode = prelfet.next;

        ListNode rightnode = prelfet;
        for(int i = 0;i<right-left+1;i++)
            rightnode = rightnode.next;
        
    
        ListNode nextright = rightnode.next;
        //断开链表
        prelfet.next = null;
        rightnode.next = null;
        //翻转链表
        ListNode cur = reverse(leftnode);
        //合并链表
        prelfet.next = cur;
        leftnode.next = nextright;
        return dummy.next;        
    
    //翻转链表有两种 递归和迭代
    public ListNode reverse(ListNode head)
        if(head == null || head.next == null)
            return head;
        
        ListNode cur = reverse(head.next);
        head.next.next = head;
        head.next = null;
        return cur;
    

字节跳动高频算法题top100

...现次数3.无重复字符的最长子串10625.K个一组翻转链表84206.反转链表83215.数组中的第K个最大元素81146.LRU缓存机制68103.二叉树的锯齿形层次遍历6415.三数之和62121.买卖股票的最佳时机61160.相交链表581.两数之和48236.二叉树的最近公共... 查看详情

字节跳动高频算法题top100

...现次数3.无重复字符的最长子串10625.K个一组翻转链表84206.反转链表83215.数组中的第K个最大元素81146.LRU缓存机制68103.二叉树的锯齿形层次遍历6415.三数之和62121.买卖股票的最佳时机61160.相交链表581.两数之和48236.二叉树的最近公共... 查看详情

字节跳动高频算法题top100

...现次数3.无重复字符的最长子串10625.K个一组翻转链表84206.反转链表83215.数组中的第K个最大元素81146.LRU缓存机制68103.二叉树的锯齿形层次遍历6415.三数之和62121.买卖股票的最佳时机61160.相交链表581.两数之和48236.二叉树的最近公共... 查看详情

leetcodejava刷题笔记—92.反转链表ii(代码片段)

92.反转链表II反转从位置left到right的链表,返回反转后的链表头节点。需要使用一趟扫描完成反转。这道题相比于206题,难度加大,206题可以看做是此题的特例,即left=1,right=length。因此,对于这道... 查看详情

链表7:超高频面试题——链表反转之一(代码片段)

链表反转是一个出现频率特别高的算法题,笔者过去这些年面试,至少遇到过七八次。其中更夸张的是曾经两天写了三次,上午YY,下午金山云,第二天快手。链表反转在各大高频题排名网站也长期占领前三。... 查看详情

leetcode92.反转链表ii(代码片段)

...m/s/1hjwK0ZeRxYGB8lIkbKuQgQ提取码:6666之前讲过链表的全部反转《432,剑指 查看详情

92.反转链表ii(代码片段)

反转链表II给你单链表的头指针head和两个整数left和right,其中left<=right。请你反转从位置left到位置right的链表节点,返回反转后的链表。示例1:输入:head=[1,2,3,4,5],left=2,right=4输出:[1,4,3,2,5]示例2... 查看详情

leetcode92.反转链表ii(代码片段)

题目描述给你单链表的头指针head和两个整数left和right,其中left<=right。请你反转从位置left到位置right的链表节点,返回反转后的链表代码/***Definitionforsingly-linkedlist.*structListNode*intval;*ListNode*next;*ListNode():val(0),next( 查看详情

92.反转链表ii(代码片段)

...针head和两个整数left和right,其中left<=right。请你反转从位置left到位置right的链表节点,返回反转后的链表。思路算法记录说明一、题目二、分析总结说明一、题目  输入:head=[1,2,3,4,5],left=2,right= 查看详情

25.k个一组翻转链表(困难)-字节跳动高频题(代码片段)

一、题目描述给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:... 查看详情

字节跳动笔试题:链表反转(代码片段)

...的伙伴说面试字节跳动的时候要求现场写出以k个为一组反转链表,如果不做准备,之前没有一点了解,看到这种题目,很容易懵逼,那么肯定就必挂无疑了。算法的种类很多,数组、链表、二叉树、动态规划、贪心、回溯等(越来... 查看详情

每日一题|曾被反转链表支配的恐惧(代码片段)

...ff0c;感觉挺好,好巧不巧打开LeetCode的每日一题刚好是反转链表,这道去年年初面试字节跳动挂掉的算法题,趁这个机会把之前算法的记忆捡回来。Date:2021-03-21Week121、反转链表II难度:Medium题目描述给你单链表的头... 查看详情

每日一题|曾被反转链表支配的恐惧(代码片段)

...ff0c;感觉挺好,好巧不巧打开LeetCode的每日一题刚好是反转链表,这道去年年初面试字节跳动挂掉的算法题,趁这个机会把之前算法的记忆捡回来。Date:2021-03-21Week121、反转链表II难度:Medium题目描述给你单链表的头... 查看详情

字节跳动算法整理(代码片段)

...三数之和岛屿的最大面积搜索旋转排序数组朋友圈接雨水反转链表两数相加合并K个升序链表买卖股票的最佳时机买卖股票的最佳时机II最大子序和最小栈LRU缓存机制x的平方根UTF-8编码验证第二高的薪水strcmpstrcatstrlenmemcpystrcpy无重... 查看详情

124.二叉树中的最大路径和-字节跳动高频题(代码片段)

一、题目描述路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中至多出现一次。该路径至少包含一个节点,且不一定经过根节点。路径和是路径中各... 查看详情

92.反转链表ii(代码片段)

92.反转链表IIhttps://leetcode-cn.com/problems/reverse-linked-list-ii/难度完成日期耗时提交次数中等2020-1-161小时1问题描述反转从位置m到n的链表。请使用一趟扫描完成反转。说明:1≤m≤n≤链表长度。示例:输入:1->2->3->4->5->NULL,m=2,n... 查看详情

链表相关的leetcode重要题目(代码片段)

Leetcode92:反转链表II解决这道题需要三个步骤:找到需要反转的第一个节点。可以通过头节点前进m-1步,找到反转开始的位置。将需要反转的部分进行反转。参考Leetcode206:反转链表。将反转部分与剩余部分进行链接。其中分为... 查看详情

199.二叉树的右视图-字节跳动高频题(代码片段)

一、题目描述给定一个二叉树的根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例1:输入:[1,2,3,null,5,null,4]输出:[1,3,4]示例2:输入:[1,null,3]输出:[1,3]示例3:... 查看详情