zoukankan      html  css  js  c++  java
  • Java反转链表

    最容易想到的方式就是使用Stack,但是牛客网限制时间导致不能使用栈,所以使用了临时变量,只用一次遍历就可以得到最终结果,代码如下:

    package com.example;
    class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
    this.val = val;
    }
    }
    public class Solution {
    public ListNode ReverseList(ListNode head) {
    ListNode first = head;
    ListNode cur = head;
    while (cur.next != null) {
    //记住目前第二位的值
    ListNode curNext = cur.next;
    //System.out.println(curNext.val);
    //目前的第三位变成第二位
    cur.next = cur.next.next;
    //System.out.println(cur.next.val);
    //第二位-》第一位
    curNext.next = first;
    //System.out.println(curNext.next.val);
    //指向改变之后的第一位
    first = curNext;
    //System.out.println(first.val);

    //这里已经在队首插入了一个元素,相当于整体移动了一位,
    //不用将当前的位置向后移动了
    /*cur = cur.next;
    System.out.println(cur.val);
    */
    }
    return first;
    }
    public static void main(String []args) {
    ListNode node = new ListNode(1);
    node.next = new ListNode(2);
    node.next.next = new ListNode(3);
    node.next.next.next = new ListNode(4);
    Solution soluttion = new Solution();
    System.out.print(soluttion.ReverseList(node).val);
    }
    }

  • 相关阅读:
    PHP session
    PHP范例注册审核
    php文件操作
    JSON 弹窗
    PDO
    CSP-S2020 游记
    Meissel-Lehmer算法 学习笔记
    [AGC046C] Shift 题解
    Min_25筛学习笔记
    GDOI2020 游记
  • 原文地址:https://www.cnblogs.com/adamhome/p/7402209.html
Copyright © 2011-2022 走看看