92. 反转链表 II

导读:本篇文章讲解 92. 反转链表 II,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

92. 反转链表 II92. 反转链表 IIhttps://leetcode.cn/problems/reverse-linked-list-ii/

难度中等1382

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

示例 1:

92. 反转链表 II

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

示例 2:

输入:head = [5], left = 1, right = 1
输出:[5]

提示:

  • 链表中节点数目为 n
  • 1 <= n <= 500
  • -500 <= Node.val <= 500
  • 1 <= left <= right <= n

进阶: 你可以使用一趟扫描完成反转吗?

通过次数334,001提交次数601,179

/**
 * 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) {

        // 一次遍历
        ListNode node = new ListNode();
        node.next = head;
        head = node;
        int i=1;

        ListNode end=null;
        while(node!=null)
        {
            if(i<left) 
            {
                i++;
                node = node.next;
            }
            else if(i>=left && i<right)
            {
                if(i==left) end = node.next;
                ListNode temp = end.next;
                end.next = temp.next;
                temp.next = node.next;
                node.next = temp;
                i++;
            }
            else if(i==right)
            {
                // end.next = temp;
                // System.out.println(temp.val);
                return head.next;
            }
        }
        return head.next;
    }
}

92. 反转链表 II

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/68955.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!