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

javascript算法之?dāng)?shù)組反轉(zhuǎn)

 更新時(shí)間:2022年08月11日 11:14:09   作者:乾復(fù)道  
這篇文章主要介紹了javascript算法之?dāng)?shù)組反轉(zhuǎn),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

1.數(shù)組反轉(zhuǎn)

1.1 leecode題目-旋轉(zhuǎn)數(shù)組

給你一個(gè)數(shù)組,將數(shù)組中的元素向右輪轉(zhuǎn) k 個(gè)位置,其中 k 是非負(fù)數(shù)。

示例:

輸入: nums = [1,2,3,4,5,6,7], k = 3
輸出: [5,6,7,1,2,3,4]
解釋:
向右輪轉(zhuǎn) 1 步: [7,1,2,3,4,5,6]
向右輪轉(zhuǎn) 2 步: [6,7,1,2,3,4,5]
向右輪轉(zhuǎn) 3 步: [5,6,7,1,2,3,4]

1.2 分析題目

  • 數(shù)組元素有序輪轉(zhuǎn),即輪轉(zhuǎn)位置k,意味著,每個(gè)元素向后移k位,且長(zhǎng)度n-k~n-1位置的元素會(huì)被挪移至最前方;
  • k為非負(fù)整數(shù),所以,不存在向左輪轉(zhuǎn);

1.3解題思路

在不使用額外數(shù)組的前提下,我們可以有如下思考, 設(shè)數(shù)組長(zhǎng)度為length,則

  • 需要輪轉(zhuǎn)k位,即數(shù)組的最后k位會(huì)進(jìn)行挪移至數(shù)組前方,即,當(dāng)我們反轉(zhuǎn)數(shù)組后,可以得知[0,k-1],[k,lenth-1]這兩個(gè)數(shù)組,即為輪轉(zhuǎn)之后的對(duì)應(yīng)數(shù)組,但是,兩個(gè)數(shù)組中的元素排序是反的;
  • 接下來(lái),依次反轉(zhuǎn)[0,k-1],[k,lenth-1],這兩個(gè)數(shù)組,得到的數(shù)組就是答案了

1.4 代碼

const reverseArray = (nums, start, end) => {
  while (start < end) {
    const temp = nums[start];
    nums[start] = nums[end];
    nums[end] = temp;
    start += 1;
    end -= 1;
  }
  return nums;
};
var reverseFunction = function(nums, k) {
  let length  = nums.length;
  nums = reverseArray(nums, 0, length - 1);
  nums = reverseArray(nums, 0, k - 1);
  nums = reverseArray(nums, k, length - 1);
};
reverseFunction([1,2,3,4,5,6,7],3);

輸出:[5,6,7,1,2,3,4]

1.5 復(fù)雜度分析

  • 時(shí)間復(fù)雜度:時(shí)間復(fù)雜度:O(n),其中 nn 為數(shù)組的長(zhǎng)度。每個(gè)元素被翻轉(zhuǎn)兩次,一共 n 個(gè)元素,因此總時(shí)間復(fù)雜度為 O(2n)=O(n)。
  • 空間復(fù)雜度:O(1)。只需要常數(shù)空間存放若干變量。

1.6 其他解法

思路:

  • 既然輪轉(zhuǎn)k位,即[length-1-k,length-1]位置的元素變?yōu)閇0,k-1]
  • [0,length-1-k]位置的元素變?yōu)閇length-1-k,length-1]
  • 所以我們只需要將原數(shù)組拆分為[0,k-1],[length-1-k,length-1],然后將其按照[length-1-k,length-1]+[0,k-1]組裝成一個(gè)數(shù)組即可

代碼:

var reverseFunction2 = function(nums, k) {
  let length  = nums.length;
  let arrayLeft = nums.slice(0,length-k);
  let arrayRight = nums.slice(length-k);
  // return [...new Set([...arrayRight,...arrayLeft])];
  return arrayRight.concat(arrayLeft);
};
reverseFunction2([1,2,3,4,5,6,7],3);

大家會(huì)發(fā)現(xiàn)上述代碼中,我注釋了一行,因?yàn)?,絕對(duì)誘人會(huì)想使用new Set方法去合并兩個(gè)數(shù)組,那么,請(qǐng)注意,千萬(wàn)不能使用,因?yàn)?,new Set方法,會(huì)講兩個(gè)數(shù)組進(jìn)行合并后去重,如果原數(shù)組中出現(xiàn)相同元素,則,new Set將會(huì)給使用者狠狠上一課!

總結(jié)

算法的邏輯不同的人有不同的想法,但是殊途同歸,答案是一致的,前提是,一定要靠清楚問(wèn)題,仔細(xì)分析,驗(yàn)證的時(shí)候也要考慮各種情況。

到此這篇關(guān)于javascript算法之?dāng)?shù)組反轉(zhuǎn)的文章就介紹到這了,更多相關(guān)javascript數(shù)組反轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • es6 super關(guān)鍵字的理解與應(yīng)用實(shí)例分析

    es6 super關(guān)鍵字的理解與應(yīng)用實(shí)例分析

    這篇文章主要介紹了es6 super關(guān)鍵字的理解與應(yīng)用,結(jié)合實(shí)例形式分析了es6 super關(guān)鍵字的功能、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • w3c編程挑戰(zhàn)_初級(jí)腳本算法實(shí)戰(zhàn)篇

    w3c編程挑戰(zhàn)_初級(jí)腳本算法實(shí)戰(zhàn)篇

    下面小編就為大家?guī)?lái)一篇w3c編程挑戰(zhàn)_初級(jí)腳本算法實(shí)戰(zhàn)篇。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • nodejs入門(mén)詳解(多篇文章結(jié)合)

    nodejs入門(mén)詳解(多篇文章結(jié)合)

    Node.js是一套用來(lái)編寫(xiě)高性能網(wǎng)絡(luò)服務(wù)器的JavaScript工具包,一系列的變化由此開(kāi)始。比較獨(dú)特的是,Node.js會(huì)假設(shè)你是在POSIX環(huán)境下運(yùn)行它Linux 或 Mac OS X
    2012-03-03
  • JavaScript中的連字符詳解

    JavaScript中的連字符詳解

    這篇文章主要是對(duì)JavaScript中的連字符進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-11-11
  • JavaScript實(shí)現(xiàn)隨機(jī)數(shù)生成器(去重)

    JavaScript實(shí)現(xiàn)隨機(jī)數(shù)生成器(去重)

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)隨機(jī)數(shù)生成器,生成不重復(fù)的隨機(jī)數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 讓DIV的滾動(dòng)條自動(dòng)滾動(dòng)到最底部的3種方法(推薦)

    讓DIV的滾動(dòng)條自動(dòng)滾動(dòng)到最底部的3種方法(推薦)

    下面小編就為大家?guī)?lái)一篇讓DIV的滾動(dòng)條自動(dòng)滾動(dòng)到最底部的3種方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • webpack源碼之loader機(jī)制詳解

    webpack源碼之loader機(jī)制詳解

    本篇文章主要介紹了webpack源碼之loader機(jī)制詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • JavaScript實(shí)現(xiàn)簡(jiǎn)單圖片翻轉(zhuǎn)的方法

    JavaScript實(shí)現(xiàn)簡(jiǎn)單圖片翻轉(zhuǎn)的方法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)單圖片翻轉(zhuǎn)的方法,涉及javascript操作圖片與數(shù)組的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 一文搞懂JavaScript中的this綁定規(guī)則

    一文搞懂JavaScript中的this綁定規(guī)則

    這篇文章主要為大家詳細(xì)介紹了原生JS之this綁定規(guī)則,這樣大家再也不用擔(dān)心this指向問(wèn)題了。文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-09-09
  • js實(shí)現(xiàn)同一頁(yè)面可多次調(diào)用的圖片幻燈切換效果

    js實(shí)現(xiàn)同一頁(yè)面可多次調(diào)用的圖片幻燈切換效果

    這篇文章主要介紹了js實(shí)現(xiàn)同一頁(yè)面可多次調(diào)用的圖片幻燈切換效果,可實(shí)現(xiàn)在同一頁(yè)面中多次調(diào)用幻燈切換效果,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-02-02

最新評(píng)論

兴安盟| 嘉义县| 昌邑市| 周宁县| 谷城县| 讷河市| 怀仁县| 晋江市| 中超| 吉木萨尔县| 衡山县| 扎赉特旗| 金坛市| 双桥区| 铁岭市| 仁寿县| 庆阳市| 孝昌县| 沐川县| 富阳市| 齐河县| 方正县| 巴楚县| 林周县| 磴口县| 中方县| 天气| 长葛市| 剑阁县| 花莲县| 乐业县| 景洪市| 广水市| 汝城县| 兴文县| 济南市| 华池县| 东平县| 漳州市| 澄城县| 体育|