国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

LeetCode 之 JavaScript 解答第206題 —— 反轉(zhuǎn)鏈表(Reverse Link

zhangfaliang / 3548人閱讀

摘要:算法思路兩種方法一般反轉(zhuǎn)遞歸法一般解決定義三個指針,分別為,存儲當(dāng)前結(jié)點,指向反轉(zhuǎn)好的結(jié)點的頭結(jié)點,存儲下一結(jié)點信息。遞歸法重點分析先確定終止條件當(dāng)下一結(jié)點為時,返回當(dāng)前節(jié)點判斷當(dāng)前的鏈表是否為遞歸找到尾結(jié)點,將其存儲為頭結(jié)點。

Time:2019/4/23
Title: Reverse Linked List
Difficulty: Easy
Author: 小鹿

題目:Reverse Linked List(反轉(zhuǎn)鏈表)

Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL

Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

Solve:
▉ 問題分析
1)反轉(zhuǎn)鏈表的我們第一能夠想到的方法就是最常用的方法,聲明三個指針,把頭結(jié)點變?yōu)槲步Y(jié)點,然后下一結(jié)點拼接到尾結(jié)點的頭部,一次類推。說白了就是就是直接將鏈表指針反轉(zhuǎn)就可以實現(xiàn)反轉(zhuǎn)鏈表。
▉ 算法思路

兩種方法:

一般反轉(zhuǎn)

遞歸法

一般解決:

1)定義三個指針,分別為 Pnext、pre、current,current 存儲當(dāng)前結(jié)點, pre 指向反轉(zhuǎn)好的結(jié)點的頭結(jié)點,Pnext 存儲下一結(jié)點信息。

2)判斷當(dāng)前結(jié)點是否可以反轉(zhuǎn)(是否為空鏈表或鏈表大于 1 個結(jié)點)?

步驟:

1)Pnext 指針存儲下一結(jié)點 。

2)當(dāng)前結(jié)點的 next 結(jié)點是否為 null (為 null 的話當(dāng)前結(jié)點就是最后的一個結(jié)點),如果為 null,將當(dāng)前節(jié)點賦值為 head 頭指針(斷裂處)。

3)將 pre 指針指向的結(jié)點賦值當(dāng)前節(jié)點 current 的下一結(jié)點 next。

4)然后讓 pre 指針指向當(dāng)前節(jié)點 current。

5)current 繼續(xù)遍歷, 當(dāng)前節(jié)點指向 current 指向 Pnext。

遞歸法(重點分析):

1)先確定終止條件:當(dāng)下一結(jié)點為 null 時,返回當(dāng)前節(jié)點;

2)判斷當(dāng)前的鏈表是否為 null;

3)遞歸找到尾結(jié)點,將其存儲為頭結(jié)點。

4)此時遞歸的層次是第二層遞歸,所以要設(shè)置為頭結(jié)點的下一結(jié)點就是當(dāng)前第二層結(jié)點,并且將第二節(jié)點的下一結(jié)點設(shè)置為 bull。

▉ 測試用例
1)鏈表是空鏈表。

2)當(dāng)前鏈表的長度小于等于 1。

3)輸入長度大于 1 的鏈表。

▉ 遞歸法
const reverseList = (head)=>{
       if(head == null || head.next == null){
           return head;
       }else{
           let newhead = reverseList(head.next);
           head.next.next = head;
           head.next = null;
           return newhead;
       }
   }
▉ 性能分析

時間復(fù)雜度:O(n)。只需遍歷整個鏈表就可以完成反轉(zhuǎn),時間復(fù)雜度為 O(n)。

空間復(fù)雜度:O(1)。只需要常量級的空間,空間復(fù)雜度為 O(1)。


歡迎一起加入到 LeetCode 開源 Github 倉庫,可以向 me 提交您其他語言的代碼。在倉庫上堅持和小伙伴們一起打卡,共同完善我們的開源小倉庫!
Github:https://github.com/luxiangqia...
歡迎關(guān)注我個人公眾號:「一個不甘平凡的碼農(nóng)」,記錄了自己一路自學(xué)編程的故事。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/103970.html

相關(guān)文章

  • LeetCode JavaScript 解答344 —— 反轉(zhuǎn)字符串(Reverse Str

    摘要:小鹿題目反轉(zhuǎn)字符串編寫一個函數(shù),其作用是將輸入的字符串反轉(zhuǎn)過來。輸入字符串以字符數(shù)組的形式給出。如果為奇數(shù),當(dāng)兩個指針相等時,反轉(zhuǎn)完畢。測試用例空字符串。奇數(shù)個數(shù)的字符串。長度為的字符串。考查內(nèi)容對字符串的基本操作。 Time:2019/4/18Title: Reverse StringDifficulty: EasyAuthor: 小鹿 題目:Reverse String(反轉(zhuǎn)字...

    bbbbbb 評論0 收藏0
  • LeetCode 攻略 - 2019 年 7 月下半月匯總(100 攻略)

    摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經(jīng)到題,所以后面會調(diào)整自己,在刷算法與數(shù)據(jù)結(jié)構(gòu)的同時,攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區(qū)別...

    tain335 評論0 收藏0
  • LeetCode JavaScript 解答151 —— 反轉(zhuǎn)字符串中的單詞

    摘要:小鹿題目翻轉(zhuǎn)字符串里的單詞給定一個字符串,逐個翻轉(zhuǎn)字符串中的每個單詞。說明無空格字符構(gòu)成一個單詞。遇到空格之后,將單詞進行倒序拼接。消除尾部的空格。測試用例空字符串。中間空格大于的字符串。 Time:2019/4/20Title: Reverse Words In a StringDifficulty: MidumnAuthor: 小鹿 題目:Reverse Words In a ...

    betacat 評論0 收藏0
  • JS算法leetcode(1~10)

    摘要:先去空白,去掉空白之后取第一個字符,判斷正負(fù)符號,若是英文直接返回,若數(shù)字則不取。回文數(shù)題目描述判斷一個整數(shù)是否是回文數(shù)。回文數(shù)是指正序從左向右和倒序從右向左讀都是一樣的整數(shù)。 JS算法題之leetcode(1~10) 前言 一直以來,前端開發(fā)的知識儲備在數(shù)據(jù)結(jié)構(gòu)以及算法層面是有所暫缺的,可能歸根于我們的前端開發(fā)的業(yè)務(wù)性質(zhì),但是我認(rèn)為任何的編程崗位都離不開數(shù)據(jù)結(jié)構(gòu)以及算法。因此,我作為...

    SoapEye 評論0 收藏0
  • LeetCode 206反轉(zhuǎn)鏈表 Reverse Linked List

    摘要:反轉(zhuǎn)一個單鏈表。示例輸入輸出進階你可以迭代或遞歸地反轉(zhuǎn)鏈表。你能否用兩種方法解決這道題解題思路每次遍歷到最后一位取節(jié)點這種方法就算了時間復(fù)雜度太高。從鏈表末尾向頭部逐個分離節(jié)點,并將節(jié)點添加到新鏈表的末尾。與迭代法原理相似。 反轉(zhuǎn)一個單鏈表。 Reverse a singly linked list. 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2...

    Gilbertat 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<