zoukankan      html  css  js  c++  java
  • leetcode 92. Reverse Linked List II

    题目内容

    Reverse a linked list from position m to n. Do it in one-pass.

    Example:
    Note: 1 ≤ m ≤ n ≤ length of list.
    
    Example:
    
    Input: 1->2->3->4->5->NULL, m = 2, n = 4
    Output: 1->4->3->2->5->NULL
    
    

    分析过程

    • 题目归类:
      链表,递归方式链表
    • 题目分析:
      本题目的是控制链表的部分反转,我采用的方法是修改了递归链表反转算法
    • 边界分析:
      • 空值分析
      • 循环边界分析
    • 方法分析:
      • 数据结构分析
      • 状态机
      • 状态转移方程
      • 最优解
    • 测试用例构建

    代码实现

    递归

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode reverseBetween(ListNode head, int m, int n) {
            if(head == null)
                return null;
            int l = n-m;
            ListNode node = new ListNode(0);
            node.next = head;
            ListNode tmp =node;
            while(m>1){
                node = node.next;
                m--;
            }
            node.next=reverse(node.next,l);
            return tmp.next;
        }
        public ListNode reverse(ListNode head, int i){
            if(i == 0||head==null||head.next==null){
                return head;
            }
            ListNode tmp = reverse(head.next,i-1);
            ListNode y = head.next.next;
            head.next.next = head;
            head.next = y;
            return tmp;
        }
    }
    
    
    

    效率提高

    拓展问题

  • 相关阅读:
    springboot Serving Web Content with Spring MVC
    Java的String中的subString()方法
    required string parameter XXX is not present
    NMON监控linux性能
    Linux下Java性能监控
    Linux常用命令
    Loadrunner测试webservice协议总结
    AWR报告分析
    性能测试指标
    如何保证测试的覆盖率
  • 原文地址:https://www.cnblogs.com/clnsx/p/12308439.html
Copyright © 2011-2022 走看看