翻转链表

野生程序员 Life is fucking movie ,we all performer !We all no more younger! 本文由博客端 http://www.dlmsc.cn 主动推送

翻转链表力扣链接

反转一个单链表。

示例:

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

我先贴出自己愚笨的方案

//s迭代
	public ListNode reverseList(ListNode head) {
		ListNode pre = head;
		ListNode fa = pre;
		List<Integer> list = new ArrayList<Integer>();
		while(head!=null) {
			list.add(head.val);
			head = head.next;
		}
		for (int i = list.size()-1; i >= 0; i--) {
			pre.val = list.get(i);
			pre = pre.next;
		}
		return fa;
    }

我写的代码质量也就这水平了,哈哈,一个字,菜

咱们来看一下官方

public ListNode reverseList(ListNode head) {
		//申请节点,pre和 cur,pre指向null
		ListNode pre = null;
		ListNode cur = head;
		ListNode tmp = null;
		while(cur!=null) {
			//记录当前节点的下一个节点
			tmp = cur.next;
			//然后将当前节点指向pre
			cur.next = pre;
			//pre和cur节点都前进一位
			pre = cur;
			cur = tmp;
		}
		return pre;
	}


实在是高级

  • 算法
    354 引用 • 242 回帖 • 17 关注

赞助商 我要投放

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...