Leetcode 92.反转链表

92.反转链表

反转从位置 mn 的链表。请使用一趟扫描完成反转。

说明:
1 ≤ m ≤ n ≤ 链表长度。

示例:

输入: 1->2->3->4->5->NULL, m = 2, n = 4

输出: 1->4->3->2->5->NULL

详解见图:

 1 public class Solution {
 2     public class ListNode {
 3         int val;
 4         ListNode next;
 5
 6         ListNode(int x) {
 7             val = x;
 8         }
 9     }
10
11     public ListNode reverseBetween(ListNode head, int m, int n) {
12         if (head == null) {
13             return null;
14         }
15         ListNode dummy = new ListNode(0);
16         dummy.next = head;
17         ListNode prev = dummy;
18         for (int i = 0; i < m - 1; i++) {
19             prev = prev.next;
20         }
21         ListNode cur = prev.next;
22         ListNode post = cur.next;
23         for(int i=0;i<n-m;i++){
24             cur.next=post.next;
25             post.next=prev.next;
26             prev.next=post;
27             post=cur.next;
28         }
29         return dummy.next;
30     }
31 }

原文地址:https://www.cnblogs.com/kexinxin/p/10163072.html

时间: 2024-10-09 21:13:59

Leetcode 92.反转链表的相关文章

Leetcode 92. 反转链表 II

反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL 思路:分成两个情况来写第一种:如果m=1,那就是一道反转链表,先翻转m-n的节点,翻转后,头结点就变成了尾节点,所以把这些节点保存起来,然后再把后面的节点接到尾节点第二种:如果!=1,翻转m到n的中间节点即可 1 p

LeetCode——92. 反转链表 II

反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL https://leetcode-cn.com/problems/reverse-linked-list-ii/ 迭代 1 -> 2 -> 3 -> 4 -> 5 -> NULL 1 -

每天一道面试题LeetCode 206 -- 反转链表

LeetCode206 反转链表 思路 代码 # # @lc app=leetcode.cn id=206 lang=python3 # # [206] 反转链表 # # https://leetcode-cn.com/problems/reverse-linked-list/description/ # # algorithms # Easy (61.53%) # Likes: 624 # Dislikes: 0 # Total Accepted: 112.8K # Total Submiss

leetcode 206. 反转链表(Reverse Linked List)

目录 题目描述: 示例: 进阶: 解法: 题目描述: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表.你能否用两种方法解决这道题? 解法: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode

leetcode之反转链表图文详解

206-反转链表 题目: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路: 迭代法: 新建一个链表的头部,循环遍历旧链表的结点,将其加到新链表的后面 递归法 代码:(迭代法) /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; *

LeetCode:反转链表

C++示例: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: // 递归实现反转 ListNode* reverseList(ListNode* head) { if (head == NULL) { cout <<

leetcode——206. 反转链表

头依次拔下来,按顺序插进另一个链表: # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def reverseList(self, head: ListNode) -> ListNode: new_head=None while head: tmp=head.next head.next=

leetcode 206 反转链表

不会. 递归.有点慢,18ms. /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* reverseList(ListNode* head) { if(head==NULL||head->next==N

92. 反转链表 II

题目描述: Reverse a linked list from position m to n. Do it in-place and in one-pass.For example:Given 1->2->3->4->5->NULL, m = 2 and n = 4, return 1->4->3->2->5->NULL. Note: Given m, n satisfy the following condition:1 ≤ m ≤ n ≤