zoukankan      html  css  js  c++  java
  • LeetCode OJ

    题目:

    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->NULLm = 2 and n = 4,

    return 1->4->3->2->5->NULL.

    Note:
    Given mn satisfy the following condition:
    1 ≤ m ≤ n ≤ length of list.

    解题思路:

    先找到需要翻转的起始节点,然后,翻转其后的n - m 个节点。 注意处理翻转的起始节点为head的情况。

    代码:

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode *reverseBetween(ListNode *head, int m, int n) {
    12         if (head == NULL) return NULL;
    13         
    14         ListNode *pre_node = NULL, *mid_first = head;
    15         for (int i = 1; i < m; i++) {
    16             pre_node = mid_first;
    17             mid_first = mid_first->next;
    18         }
    19         ListNode *last = mid_first->next, *pre = mid_first;
    20         for (int i = m; i < n; i++) {
    21             ListNode *tmp = last->next;
    22             last->next = pre;
    23             pre = last;
    24             last = tmp;
    25         }
    26         if (pre_node == NULL) {
    27             head = pre;
    28             mid_first->next = last;
    29         } else {
    30             pre_node->next = pre;
    31             mid_first->next = last;
    32         }
    33         return head;
    34     }
    35 };
  • 相关阅读:
    linux命令总结
    在阿里云centos7.6上部署vue.js2.6前端应用
    MongoDb语法
    Echarts 地图绘制
    在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4
    django--- 支付宝退款
    响应式网站设计(Responsive Web design)
    django -- 推荐商品算法
    django -- 美多订单分表
    小程序基本配置
  • 原文地址:https://www.cnblogs.com/dongguangqing/p/3775024.html
Copyright © 2011-2022 走看看