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

資訊專欄INFORMATION COLUMN

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

zhangfaliang / 3523人閱讀

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

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)鏈表的我們第一能夠想到的方法就是最常用的方法,聲明三個(gè)指針,把頭結(jié)點(diǎn)變?yōu)槲步Y(jié)點(diǎn),然后下一結(jié)點(diǎn)拼接到尾結(jié)點(diǎn)的頭部,一次類推。說白了就是就是直接將鏈表指針反轉(zhuǎn)就可以實(shí)現(xiàn)反轉(zhuǎn)鏈表。
▉ 算法思路

兩種方法:

一般反轉(zhuǎn)

遞歸法

一般解決:

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

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

步驟:

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

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

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

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

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

遞歸法(重點(diǎn)分析):

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

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

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

4)此時(shí)遞歸的層次是第二層遞歸,所以要設(shè)置為頭結(jié)點(diǎn)的下一結(jié)點(diǎn)就是當(dāng)前第二層結(jié)點(diǎn),并且將第二節(jié)點(diǎn)的下一結(jié)點(diǎn)設(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;
       }
   }
▉ 性能分析

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

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


歡迎一起加入到 LeetCode 開源 Github 倉庫,可以向 me 提交您其他語言的代碼。在倉庫上堅(jiān)持和小伙伴們一起打卡,共同完善我們的開源小倉庫!
Github:https://github.com/luxiangqia...
歡迎關(guān)注我個(gè)人公眾號:「一個(gè)不甘平凡的碼農(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)字符串編寫一個(gè)函數(shù),其作用是將輸入的字符串反轉(zhuǎn)過來。輸入字符串以字符數(shù)組的形式給出。如果為奇數(shù),當(dāng)兩個(gè)指針相等時(shí),反轉(zhuǎn)完畢。測試用例空字符串。奇數(shù)個(gè)數(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)的同時(shí),攻略中等難度的題目。 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)字符串里的單詞給定一個(gè)字符串,逐個(gè)翻轉(zhuǎn)字符串中的每個(gè)單詞。說明無空格字符構(gòu)成一個(gè)單詞。遇到空格之后,將單詞進(jìn)行倒序拼接。消除尾部的空格。測試用例空字符串。中間空格大于的字符串。 Time:2019/4/20Title: Reverse Words In a StringDifficulty: MidumnAuthor: 小鹿 題目:Reverse Words In a ...

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

    摘要:先去空白,去掉空白之后取第一個(gè)字符,判斷正負(fù)符號,若是英文直接返回,若數(shù)字則不取。回文數(shù)題目描述判斷一個(gè)整數(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)一個(gè)單鏈表。示例輸入輸出進(jìn)階你可以迭代或遞歸地反轉(zhuǎn)鏈表。你能否用兩種方法解決這道題解題思路每次遍歷到最后一位取節(jié)點(diǎn)這種方法就算了時(shí)間復(fù)雜度太高。從鏈表末尾向頭部逐個(gè)分離節(jié)點(diǎn),并將節(jié)點(diǎn)添加到新鏈表的末尾。與迭代法原理相似。 反轉(zhuǎn)一個(gè)單鏈表。 Reverse a singly linked list. 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2...

    Gilbertat 評論0 收藏0

發(fā)表評論

0條評論

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