LeetCode初級(jí)算法--鏈表01:反轉(zhuǎn)鏈表
搜索微信公眾號(hào):'AI-ming3526'或者'計(jì)算機(jī)視覺(jué)這件小事' 獲取更多算法敢会、機(jī)器學(xué)習(xí)干貨
csdn:https://blog.csdn.net/baidu_31657889/
csdn:https://blog.csdn.net/abcgkj/
github:https://github.com/aimi-cn/AILearners
一疏橄、引子
這是由LeetCode官方推出的的經(jīng)典面試題目清單~
這個(gè)模塊對(duì)應(yīng)的是探索的初級(jí)算法~旨在幫助入門(mén)算法幔嫂。我們第一遍刷的是leetcode推薦的題目。
查看完整的劍指Offer算法題解析請(qǐng)點(diǎn)擊github鏈接:
github地址
二旅东、題目
反轉(zhuǎn)一個(gè)單鏈表混聊。
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
進(jìn)階:
你可以迭代或遞歸地反轉(zhuǎn)鏈表。你能否用兩種方法解決這道題茸塞?
1、思路
這個(gè)題對(duì)我來(lái)說(shuō)還是有點(diǎn)難度了查剖,其實(shí)原理不難钾虐,我們我們使用三個(gè)指針,分別指向當(dāng)前遍歷到的結(jié)點(diǎn)笋庄、它的前一個(gè)結(jié)點(diǎn)以及后一個(gè)結(jié)點(diǎn)效扫。
在遍歷的時(shí)候,做當(dāng)前結(jié)點(diǎn)的尾結(jié)點(diǎn)和前一個(gè)結(jié)點(diǎn)的替換直砂。
因?yàn)檫@個(gè)題目之前在刷LeetCode的時(shí)候已經(jīng)做過(guò)詳細(xì)的圖解說(shuō)明 大家看鏈接就可以:https://blog.csdn.net/baidu_31657889/article/details/91552141
2菌仁、編程實(shí)現(xiàn)
python
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if head==None or head.next==None:
return head
pre = None
while head:
next = head.next
head.next = pre
pre = head
head = next
return pre
AIMI-CN AI學(xué)習(xí)交流群【1015286623】 獲取更多AI資料
分享技術(shù),樂(lè)享生活:我們的公眾號(hào)計(jì)算機(jī)視覺(jué)這件小事每周推送“AI”系列資訊類(lèi)文章静暂,歡迎您的關(guān)注济丘!
本文由博客一文多發(fā)平臺(tái) OpenWrite 發(fā)布!