44 lines
971 B
Java
44 lines
971 B
Java
|
# 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;
|
||
|
}
|
||
|
```
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<div align="center"><img width="320px" src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/githubio/公众号二维码-1.png"></img></div>
|