反转链表—将给定链表元素进行逆置

输入一个链表,反转链表后,输出新链表的表头。

解题思路:定义新链表的头结点,循环遍历原链表,将原链表的结点头插到新链表,最后返回新链表的头结点

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        if(head == null){
            return null;
        }
        ListNode node = null;//定义新链表结点
        ListNode cur = null;//定义循环指针
        while(head != null){
            cur = head.next;//先将原结点的下一个节点保存起来
            head.next = node;//对新结点进行赋值,此时原结点的下一个节点会改变
            
            node = head;
            head = cur;//让原结点回到循环位置
        }
        return node;//返回新结点
    }
}

今天写题的时候遇到了一个问题,大概意思是说些的程序时间复杂度太大,没有在规定时间完成运行。
总结:避免不必要的判断以及赋值,当然不能频繁new

猜你喜欢

转载自blog.csdn.net/ly52014/article/details/89550690
今日推荐