Leetcode原题
思路
这题听说还是字节、微软、美团阿里巴巴的热度题目。这题要求链表反转,也就是本来是前面指向后面的,现在要求后面的倒着指向前面.嗯,你是不是也想想会了,敲起了就不知道如何下手,没关系,我也是~~
迭代法
假设链表为 1—>2—>3.现在我们要改为3—>2—>1
在遍历链表时,将当前节点的 next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。
具体代码如下:
public ListNode reverseList(ListNode head) { ListNode pre =null; ListNode curr= head; while(curr!=null){ ListNode next= curr.next; //保留下一节点 curr.next =pre; //当前节点指向前一个节点 pre =curr; //前节点处理后,指针移动到当前节点 curr = next;// 当前节点往后移动 } return pre; }
另外一种递归的方法,我觉得比较复杂,不适合现在去了解。有兴趣的可以去看一下官网。提示
有兴趣的老爷,还可以关注我的公众号【一起收破烂】,回复【006】获取 最新java面试资料以及简历模型120套哦~