2019-11-02 12:07:41 +08:00
|
|
|
# 24. 反转链表
|
|
|
|
|
|
|
|
[NowCoder](https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=13&tqId=11168&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github)
|
|
|
|
|
|
|
|
## 解题思路
|
|
|
|
|
|
|
|
### 递归
|
|
|
|
|
|
|
|
```java
|
|
|
|
public ListNode ReverseList(ListNode head) {
|
|
|
|
if (head == null || head.next == null)
|
|
|
|
return head;
|
|
|
|
ListNode next = head.next;
|
|
|
|
head.next = null;
|
|
|
|
ListNode newHead = ReverseList(next);
|
|
|
|
next.next = head;
|
|
|
|
return newHead;
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
### 迭代
|
|
|
|
|
|
|
|
使用头插法。
|
|
|
|
|
|
|
|
```java
|
|
|
|
public ListNode ReverseList(ListNode head) {
|
|
|
|
ListNode newList = new ListNode(-1);
|
|
|
|
while (head != null) {
|
|
|
|
ListNode next = head.next;
|
|
|
|
head.next = newList.next;
|
|
|
|
newList.next = head;
|
|
|
|
head = next;
|
|
|
|
}
|
|
|
|
return newList.next;
|
|
|
|
}
|
|
|
|
```
|
2019-11-02 14:39:13 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-11-02 17:33:10 +08:00
|
|
|
<div align="center"><img width="320px" src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/githubio/公众号二维码-2.png"></img></div>
|