劍指 Offer - 15:反轉連結串列
題目描述
輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭
題目連結:https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
解題思路
思路1:藉助棧
思路2:遞迴
思路3:連結串列原地反轉
public class Solution {
public ListNode ReverseList(ListNode head) {
if (head == null || head.next == null) return head;
ListNode pre = null;
ListNode next = null;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
}
相關推薦
劍指 Offer - 15:反轉連結串列
題目描述 輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭 題目連結:https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca 解題思路 思路1:藉助棧 思路2
劍指offer-15:反轉連結串列
題目描述 輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。 程式碼 public class Solution15 { public ListNode ReverseList(ListNode head) { if(head==null)
劍指offer 15:反轉連結串列
#include <iostream> using namespace std; struct ListNode { public: int val; struct ListNode *next; }; class Solution { public: L
【劍指Offer】13反轉連結串列
題目描述 輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。 時間限制:1秒;空間限制:32768K;本題知識點:連結串列 解題思路 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): #
劍指offer刷題-反轉連結串列
時間限制:1秒 空間限制:32768K 熱度指數:358600 本題知識點: 連結串列 題目描述 輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。 問題分析 新建一個節點,不斷地將原來的連結
劍指 Offer - 25:複雜連結串列的複製
題目描述 輸入一個複雜連結串列(每個節點中有節點值,以及兩個指標,一個指向下一個節點,另一個特殊指標指向任意一個節點),返回結果為複製後複雜連結串列的head。 注意:輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 題目連結:https://www.no
【LeetCode & 劍指offer刷題】連結串列題4:22 刪除連結串列中倒數第k個結點(19. Remove Nth Node From End of List)
【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) 19. Remove Nth Node From End of List Given a linked list, remove the n -th node from th
【LeetCode & 劍指offer刷題】連結串列題3:18 刪除連結串列中的結點(237. Delete Node in a Linked List)
【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) Delete Node in a Linked List Write a function to delete a node (except the tail) in a s
【LeetCode & 劍指offer刷題】連結串列題2:6 從尾到頭列印連結串列
【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) 6 從尾到頭列印連結串列 題目描述 輸入一個連結串列,從尾到頭列印連結串列每個節點的值 /** * struct
【LeetCode & 劍指offer刷題】連結串列題11:Palindrome Linked List
【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) Palindrome Linked List Given a singly linked list, determine if it is a palindrome. Example 1:
【LeetCode & 劍指offer刷題】連結串列題9:Add Two Numbers
【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) Add Two Numbers You are given two non-empty linked li
《劍指offer》系列 複雜連結串列的複製(Java)
連結 牛客: 複雜連結串列的複製 題目描述 輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,陣列長度大的陣列靠前) 思路 這題目應該算是
【劍指offer】輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList
劍指offer第三題 題目如下 輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList 具體程式碼實現如下: 下面展示兩種程式碼實現,思想都是基於遞迴,遍歷到連結串列末尾,由低向上儲存資料。 1.相互呼叫遞迴 import java.util.Arra
【劍指offer】合併有序連結串列
輸入兩個單調遞增的連結串列,輸出兩個連結串列合成後的連結串列,當然我們需要合成後的連結串列滿足單調不減規則。 *思路:假設兩個連結串列的當前結點為n1(list1),n2(list2)比較連結串列結點值的大小,如果n1.val<=n2.val,則合併後的連結串列應該為 n1->Merge(n1.
[劍指offer] 3. 從頭到尾列印連結串列
題目描述 輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。 思路: 利用容器,遍歷一遍加入到一個新容器裡,然後反置輸出。 vector 用 reverse stack 則直接一個個出棧。 c
劍指offer刷題之連結串列中倒數第k個結點
題目描述 輸入一個連結串列,輸出該連結串列中倒數第k個結點。 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # s
劍指offer題解(複雜連結串列的複製)
題目描述 輸入一個複雜連結串列(每個節點中有節點值,以及兩個指標,一個指向下一個節點,另一個特殊指標指向任意一個節點),返回結果為複製後複雜連結串列的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空) 思路 新建一個連結串列,先不管random指標,根據n
劍指Offer-52 兩個連結串列的第一個公共結點
題目: 輸入兩個連結串列,找出它們的第一個公共結點。 解答: 第一種,蠻力法,時間複雜度為O(mn),不需要輔助空間 # Definition for singly-linked list. # class ListNode(object): # def __init
劍指offer之兩個連結串列的第一個公共點(Java實現)
兩個連結串列的第一個公共點 輸入兩個連結串列,找出它們的第一個公共結點 思路:我們先遍歷找到兩個連結串列的長度m和n, 如果m大,m比n大多少,比如說k,那麼先讓m先走k步,然後n和m再一起走。
劍指offer之合併有序連結串列
題目 輸入兩個單調遞增的連結串列,輸出兩個連結串列合成後的連結串列,當然我們需要合成後的連結串列滿足單調不減規則。 思路 歸併的思路,注意不要開闢新的記憶體,直接在原來連結串列上合併,剛開始被這個坑了。