最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 數(shù)據(jù)結(jié)構(gòu)之旋轉(zhuǎn)鏈表

 更新時(shí)間:2017年02月25日 08:57:05   作者:guoziqing506  
這篇文章主要介紹了Python 數(shù)據(jù)結(jié)構(gòu)之旋轉(zhuǎn)鏈表的相關(guān)資料,需要的朋友可以參考下

題目描述:給定一個(gè)鏈表,旋轉(zhuǎn)鏈表,使得每個(gè)節(jié)點(diǎn)向右移動(dòng)k個(gè)位置,其中k是一個(gè)非負(fù)數(shù)

樣例:給出鏈表1->2->3->4->5->null和k=2;返回4->5->1->2->3->null

首先,觀察一下這個(gè)題目要達(dá)到的目的,其實(shí),換一種說法,可以這樣來描述:給出一個(gè)k值,將鏈表從倒數(shù)第k個(gè)節(jié)點(diǎn)處起之后的部分移動(dòng)到鏈表前面,就樣例來說,其實(shí)是將4->5這一部分移動(dòng)到整個(gè)鏈表前面,變成4->5->1->2->3->null。不過,需要注意的是,題中沒有給出k的大小,當(dāng)k比鏈表的長(zhǎng)度還大的時(shí)候,我們就需要先用k對(duì)鏈表的長(zhǎng)度求余,比如,如果k = 7,那么上面的例子還是將4->5移動(dòng)到整個(gè)鏈表前面。

所以說,這個(gè)題的思路可以這樣來總結(jié):

1. 先求出整個(gè)鏈表的長(zhǎng)度
2. 根據(jù)k值找到需要移動(dòng)的部分鏈表的前驅(qū)(樣例中的3)
3. 在前驅(qū)之后將鏈表斷開,移動(dòng)后半部分

代碼如下:

# Definition for singly-linked list. 
# class ListNode: 
#   def __init__(self, x): 
#     self.val = x 
#     self.next = None 
 
class Solution: 
  # @param head: the list 
  # @param k: rotate to the right k places 
  # @return: the list after rotation 
  def rotateRight(self, head, k): 
    if head is None: 
      return head 
    cur = head 
    count = 1 
    # 計(jì)算鏈表長(zhǎng)度 
    while cur.next: 
      cur = cur.next 
      count += 1 
    # 為節(jié)省代碼量,這里是一個(gè)很有技巧的處理:用尾節(jié)點(diǎn)鏈接頭結(jié)點(diǎn) 
    cur.next = head 
    # 此處,k為cur從尾節(jié)點(diǎn)到要斷開部分的前驅(qū)需走的步數(shù) 
    k = count - k % count 
    # 找到前驅(qū) 
    while k != 0: 
      cur = cur.next 
      k -= 1 
    # 斷開 
    head = cur.next 
    cur.next = None 
    # 因?yàn)槭孜惨呀?jīng)相連,所以直接返回前驅(qū)后面的那個(gè)節(jié)點(diǎn)即可,此處引用為head 
    return head 
    # write your code here 

需要注意的是21行首尾相連的技巧,這大大節(jié)省了我們的代碼量,其實(shí),就按之前思路中所描述的一步步來,也沒問題。但是這個(gè)技巧確實(shí)很棒,值得學(xué)習(xí)。具體的細(xì)節(jié)我寫在了代碼注釋里。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • 深入剖析Python的列表和元組

    深入剖析Python的列表和元組

    這篇文章主要介紹了深入剖析Python的列表和元組,Python有4個(gè)內(nèi)建的數(shù)據(jù)結(jié)構(gòu),它們可以統(tǒng)稱為容器,因?yàn)樗鼈儗?shí)際上是一些“東西”組合而成的結(jié)構(gòu),而這些“東西”,可以是數(shù)字、字符甚至列表,或是它們的組合,需要的朋友可以參考下
    2023-07-07
  • 基于spring boot 日志(logback)報(bào)錯(cuò)的解決方式

    基于spring boot 日志(logback)報(bào)錯(cuò)的解決方式

    今天小編就為大家分享一篇基于spring boot 日志(logback)報(bào)錯(cuò)的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 教你如何在Pygame 中移動(dòng)你的游戲角色

    教你如何在Pygame 中移動(dòng)你的游戲角色

    Pygame是一組跨平臺(tái)的 Python 模塊,專為編寫視頻游戲而設(shè)計(jì),您可以使用 pygame 創(chuàng)建不同類型的游戲,包括街機(jī)游戲、平臺(tái)游戲等等,今天通過本文給大家介紹Pygame移動(dòng)游戲角色的實(shí)現(xiàn)過程,一起看看吧
    2021-09-09
  • 基于python的selenium全網(wǎng)最新超詳細(xì)教程

    基于python的selenium全網(wǎng)最新超詳細(xì)教程

    這篇文章主要介紹了基于python的selenium全網(wǎng)最新超詳細(xì)教程,本文內(nèi)容比較長(zhǎng),結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • python之pyinstaller組件打包命令和異常解析實(shí)戰(zhàn)

    python之pyinstaller組件打包命令和異常解析實(shí)戰(zhàn)

    前段時(shí)間在制作小工具的時(shí)候,直接在命令行用pyinstaller工具打包成功后,啟動(dòng)exe可執(zhí)行文件的時(shí)候各種報(bào)錯(cuò), 今天,我們就分享一下踩坑經(jīng)過,需要的朋友可以參考下
    2021-09-09
  • Matplotlib 生成不同大小的subplots實(shí)例

    Matplotlib 生成不同大小的subplots實(shí)例

    今天小編就為大家分享一篇Matplotlib 生成不同大小的subplots實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python游戲開發(fā)之視頻轉(zhuǎn)彩色字符動(dòng)畫

    python游戲開發(fā)之視頻轉(zhuǎn)彩色字符動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了python游戲開發(fā)之視頻轉(zhuǎn)彩色字符動(dòng)畫,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 淺談python實(shí)現(xiàn)Google翻譯PDF,解決換行的問題

    淺談python實(shí)現(xiàn)Google翻譯PDF,解決換行的問題

    今天小編就為大家分享一篇淺談python實(shí)現(xiàn)Google翻譯PDF,解決換行的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python3.9.1中使用split()的處理方法(推薦)

    Python3.9.1中使用split()的處理方法(推薦)

    這篇文章主要介紹了Python3.9.1中使用split()的處理方法(推薦),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Python線程指南詳細(xì)介紹

    Python線程指南詳細(xì)介紹

    本文介紹了Python對(duì)于線程的支持,包括學(xué)會(huì)多線程編程需要掌握的基礎(chǔ)以及Python兩個(gè)線程標(biāo)準(zhǔn)庫的完整介紹及使用示例
    2017-01-01

最新評(píng)論

商河县| 新邵县| 穆棱市| 吐鲁番市| 唐海县| 漳州市| 赞皇县| 景洪市| 仙桃市| 新河县| 博客| 凌海市| 金寨县| 信阳市| 郧西县| 福州市| 佛山市| 平塘县| 图木舒克市| 高要市| 六安市| 东乡县| 车致| 托克逊县| 加查县| 许昌县| 彭阳县| 会宁县| 天等县| 洞头县| 普兰县| 恩施市| 饶阳县| 宜川县| 灵宝市| 花莲县| 东莞市| 吴堡县| 嵊州市| 黄山市| 阿勒泰市|