中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

專用車網(wǎng)站建設(shè)哪家好比較靠譜的電商培訓(xùn)機(jī)構(gòu)

專用車網(wǎng)站建設(shè)哪家好,比較靠譜的電商培訓(xùn)機(jī)構(gòu),flash網(wǎng)站效果,發(fā)布出租信息免費(fèi)的網(wǎng)站文章目錄 1、查找數(shù)組中的最大值方法一:使用 Math.max 和展開(kāi)運(yùn)算符方法二:使用 for 循環(huán)逐一比較 2、查找數(shù)組中的第二大值方法一:排序后取第二大值方法二:遍歷找到第二大值 3、去除數(shù)組中的重復(fù)項(xiàng)4、合并兩個(gè)有序數(shù)組并保持有序5、旋轉(zhuǎn)數(shù)組…

文章目錄

    • 1、查找數(shù)組中的最大值
      • 方法一:使用 Math.max 和展開(kāi)運(yùn)算符
      • 方法二:使用 for 循環(huán)逐一比較
    • 2、查找數(shù)組中的第二大值
      • 方法一:排序后取第二大值
      • 方法二:遍歷找到第二大值
    • 3、去除數(shù)組中的重復(fù)項(xiàng)
    • 4、合并兩個(gè)有序數(shù)組并保持有序
    • 5、旋轉(zhuǎn)數(shù)組
    • 6、判斷兩個(gè)數(shù)組是否相等
    • 7、總結(jié)

1、查找數(shù)組中的最大值

給定一個(gè)數(shù)字?jǐn)?shù)組,如何找出其中的最大值

方法一:使用 Math.max 和展開(kāi)運(yùn)算符

這是最直接的解決方案。
可以使用 Math.max,并通過(guò)展開(kāi)運(yùn)算符將數(shù)組元素傳遞進(jìn)去。這樣不僅語(yǔ)法簡(jiǎn)潔,而且邏輯也很清晰。

const numbers = [1, 5, 3, 9, 2];
function findLargest(arr) {return Math.max(...arr);
}
console.log(findLargest(numbers)); // 輸出:9

解析:在這里,Math.max(…arr) 將數(shù)組解包成單個(gè)參數(shù)傳入 Math.max,一行代碼就能返回最大值。

“如果數(shù)組很大,這種方法還適用嗎?” 展開(kāi)運(yùn)算符可能會(huì)在大數(shù)組上有性能問(wèn)題,因?yàn)樗鼤?huì)消耗較多的內(nèi)存。在百萬(wàn)級(jí)別的數(shù)組上,更推薦使用 for
循環(huán)。

方法二:使用 for 循環(huán)逐一比較

使用 for 循環(huán)的方式,雖然這看起來(lái)不像是“最簡(jiǎn)單”的方法,但它能夠處理任何長(zhǎng)度的數(shù)組,無(wú)論多大,都不會(huì)受到展開(kāi)運(yùn)算符帶來(lái)的內(nèi)存限制。

const numbers = [1, 5, 3, 9, 2];
function findLargest(arr) {let max = arr[0];for (let i = 1; i < arr.length; i++) {if (arr[i] > max) {max = arr[i];}}return max;
}
console.log(findLargest(numbers)); // 輸出:9

解釋:在這個(gè)例子中,我們通過(guò) for 循環(huán)從頭遍歷數(shù)組,將當(dāng)前最大值保存在 max 中。當(dāng)遇到更大的值時(shí),更新 max。

這種方法在時(shí)間復(fù)雜度上是 O(n),而且不會(huì)引發(fā)內(nèi)存溢出,是一種更加穩(wěn)妥的處理方式。

2、查找數(shù)組中的第二大值

“如何要找到數(shù)組中的第二大值呢?” 下面展示幾種不同的方法。

方法一:排序后取第二大值

最直觀的方法就是將數(shù)組降序排列,然后取第二個(gè)值。

const numbers = [1, 5, 3, 9, 7];
function secondLargest(arr) {let sorted = arr.sort((a, b) => b - a);return sorted[1];
}
console.log(secondLargest(numbers)); // 輸出:7

分析:數(shù)組排序后,sorted[1] 就是第二大值。不過(guò)排序的時(shí)間復(fù)雜度為 O(n log n),且會(huì)改變?cè)瓟?shù)組,不是最高效的方法。

方法二:遍歷找到第二大值

如果希望更高效,可以在一次遍歷中找到第二大值。

使用兩個(gè)變量 max 和 secondMax 來(lái)記錄最大值和次大值,可以在不排序的情況下得到結(jié)果。

const numbers = [1, 5, 3, 9, 7];
function findSecondLargest(arr) {let max = -Infinity;let secondMax = -Infinity;for (let num of arr) {if (num > max) {secondMax = max;max = num;} else if (num > secondMax && num < max) {secondMax = num;}}return secondMax;
}
console.log(findSecondLargest(numbers)); // 輸出:7

解釋:這段代碼在一次循環(huán)中完成,時(shí)間復(fù)雜度為 O(n)。max 記錄當(dāng)前最大值,secondMax> 記錄次大值。每次遇到新的最大值時(shí),更新這兩個(gè)變量,保證 secondMax 是最大值之外的最大元素。

3、去除數(shù)組中的重復(fù)項(xiàng)

方法:使用 Set 去重
使用 Set 是最快捷的方式,Set 會(huì)自動(dòng)去除重復(fù)元素。

const numbers = [1, 2, 2, 3, 4, 4, 5];
function removeDuplicates(arr) {return [...new Set(arr)];
}
console.log(removeDuplicates(numbers)); // 輸出:[1, 2, 3, 4, 5]

解析:在這里,Set 自動(dòng)去重,然后再用展開(kāi)運(yùn)算符將 Set 轉(zhuǎn)換回?cái)?shù)組。操作簡(jiǎn)單且性能優(yōu)越,特別適用于中小規(guī)模的數(shù)據(jù)處理。

4、合并兩個(gè)有序數(shù)組并保持有序

將兩個(gè)已排序的數(shù)組合并并保持順序。

concat 和 sort 是一種快速實(shí)現(xiàn)的方式。

方法:使用 concat 和 sort

const arr1 = [1, 3, 5];
const arr2 = [2, 4, 6];
function mergeArrays(arr1, arr2) {return arr1.concat(arr2).sort((a, b) => a - b);
}
console.log(mergeArrays(arr1, arr2)); // 輸出:[1, 2, 3, 4, 5, 6]

解釋:concat 拼接數(shù)組,然后用 sort 進(jìn)行升序排列。這種方法簡(jiǎn)單直觀,但如果有大量數(shù)據(jù)時(shí),concat 的內(nèi)存消耗和 sort> 的效率需要注意。

5、旋轉(zhuǎn)數(shù)組

“寫一個(gè)函數(shù),將數(shù)組右移 k 次。”
這要求數(shù)組中的每個(gè)元素向右“移動(dòng)”指定的次數(shù)。比如,給定 [1, 2, 3, 4, 5],右移 2 次后數(shù)組應(yīng)變成 [4, 5, 1, 2, 3]。這類旋轉(zhuǎn)操作在數(shù)據(jù)處理和算法應(yīng)用中十分常見(jiàn)。

使用 slice 和 concat 拼接旋轉(zhuǎn)后的數(shù)組。

const arr = [1, 2, 3, 4, 5];
function rotateArray(arr, k) {k = k % arr.length; // 防止 k 超出數(shù)組長(zhǎng)度return arr.slice(-k).concat(arr.slice(0, -k));
}
console.log(rotateArray(arr, 2)); // 輸出:[4, 5, 1, 2, 3]

代碼詳解處理超長(zhǎng)旋轉(zhuǎn)次數(shù):首先,k = k % arr.length 這一行確保旋轉(zhuǎn)次數(shù)不會(huì)超出數(shù)組長(zhǎng)度。比如當(dāng) k = 7 時(shí),這段代碼將> k 變?yōu)?2(7 % 5 = 2),這相當(dāng)于只旋轉(zhuǎn)了 2 次,避免了多余的操作。

分割數(shù)組:接下來(lái),用 slice 方法將數(shù)組分成兩個(gè)部分,分別取出數(shù)組的尾部和前面的部分:arr.slice(-k) 用來(lái)取出數(shù)組最后 k> 個(gè)元素。比如當(dāng) k = 2 時(shí),arr.slice(-2) 會(huì)返回 [4, 5]。arr.slice(0, -k)> 則獲取數(shù)組的前面部分,不包括最后 k 個(gè)元素。對(duì) [1, 2, 3, 4, 5] 使用 arr.slice(0, -2),結(jié)果就是 [1,> 2, 3]。拼接旋轉(zhuǎn)后的數(shù)組:最后,你用 concat 將這兩個(gè)部分組合起來(lái),把尾部的 [4, 5] 放到 [1, 2, 3]> 的前面,完成右移操作。整個(gè)代碼執(zhí)行后得到 [4, 5, 1, 2, 3],實(shí)現(xiàn)了右移 2 次的效果。

詳細(xì)說(shuō)明:假設(shè) arr = [1, 2, 3, 4, 5],k = 2。我們需要將數(shù)組右移 2 次,讓 [4, 5] 出現(xiàn)在數(shù)組開(kāi)頭。使用> slice(-2) 得到 [4, 5]。使用 slice(0, -2) 得到 [1, 2, 3]。把這兩個(gè)部分拼接起來(lái),得到最終的 [4,> 5, 1, 2, 3]。

關(guān)鍵點(diǎn)總結(jié)循環(huán)優(yōu)化:通過(guò) k % arr.length 確保旋轉(zhuǎn)次數(shù)不會(huì)超過(guò)數(shù)組長(zhǎng)度,從而優(yōu)化效率。
分割和拼接:利用 slice 和 concat 組合,可以輕松實(shí)現(xiàn)數(shù)組的旋轉(zhuǎn)效果。

6、判斷兩個(gè)數(shù)組是否相等

方法:逐個(gè)元素比較

const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
function arraysEqual(arr1, arr2) {if (arr1.length !== arr2.length) return false;for (let i = 0; i < arr1.length; i++) {if (arr1[i] !== arr2[i]) return false;}return true;
}
console.log(arraysEqual(arr1, arr2)); // 輸出:true
console.log(arraysEqual([1, 2, 3], [1, 2, 4])); // 輸出:false

解析:逐個(gè)元素對(duì)比可以確保內(nèi)容和順序一致。此方法適用于小型數(shù)組,因?yàn)闀r(shí)間復(fù)雜度為 O(n)。

7、查找數(shù)組中和為特定值的所有數(shù)對(duì)
這涉及到去重和優(yōu)化算法的問(wèn)題。

方法:使用 Set 記錄和查找補(bǔ)數(shù)

const arr = [1, 2, 4, 3, 5, 7, 8, 9];
const target = 10;
function findPairs(arr, target) {let result = [];let seen = new Set();for (let num of arr) {let complement = target - num;if (seen.has(complement)) {result.push([num, complement]);}seen.add(num);}return result;
}console.log(findPairs(arr, target)); // 輸出:[[3, 7], [2, 8], [1, 9]]

解析:通過(guò) Set 記錄遍歷過(guò)的數(shù),找到符合條件的數(shù)對(duì)。

利用查找補(bǔ)數(shù)的方式,避免重復(fù)數(shù)對(duì),且比雙重循環(huán)效率更高。

7、總結(jié)

上面7中常用 JavaScript 操作數(shù)組方法,從最簡(jiǎn)單的查找最大值到復(fù)雜的數(shù)對(duì)查找,涵蓋了去重、排序、旋轉(zhuǎn)等經(jīng)典操作;希望能幫到你!!!

在這里插入圖片描述


別人可以拷貝我的模式,不能拷貝我的苦難,不能拷貝我不斷往前的激情。


http://www.risenshineclean.com/news/60020.html

相關(guān)文章:

  • 北京建行網(wǎng)站營(yíng)銷策劃方案
  • 做網(wǎng)站收入長(zhǎng)沙正規(guī)競(jìng)價(jià)優(yōu)化推薦
  • 手機(jī)端怎么網(wǎng)站建設(shè)seo標(biāo)簽優(yōu)化
  • 自己有網(wǎng)站怎么做點(diǎn)卡網(wǎng)絡(luò)推廣的方法有
  • 做網(wǎng)站掙錢么網(wǎng)站推廣是做什么的
  • 網(wǎng)站里的搜索怎么做免費(fèi)制作自己的網(wǎng)站
  • 西安本地十家做網(wǎng)站建設(shè)的公司seo網(wǎng)站排名的軟件
  • 醫(yī)學(xué)院英文網(wǎng)站建設(shè)方案廣州網(wǎng)絡(luò)推廣哪家好
  • 上海網(wǎng)站開(kāi)發(fā)哪里有外鏈發(fā)布網(wǎng)站
  • 如何在vs做網(wǎng)站免費(fèi)線上培訓(xùn)平臺(tái)
  • 關(guān)于政府網(wǎng)站建設(shè)的幾點(diǎn)建議免費(fèi)個(gè)人網(wǎng)頁(yè)制作
  • 蕭山城區(qū)建設(shè)有限公司網(wǎng)站公司官網(wǎng)制作多少錢
  • 做網(wǎng)站有沒(méi)有受騙過(guò)免費(fèi)刷贊網(wǎng)站推廣免費(fèi)
  • 網(wǎng)站建設(shè)費(fèi)怎么做分錄seo案例視頻教程
  • 昆明網(wǎng)站建設(shè)服務(wù)html網(wǎng)頁(yè)制作app
  • 網(wǎng)頁(yè)制作網(wǎng)站平臺(tái)深圳網(wǎng)絡(luò)推廣網(wǎng)絡(luò)
  • 中國(guó)數(shù)學(xué)外國(guó)人做視頻網(wǎng)站網(wǎng)絡(luò)軟件開(kāi)發(fā)
  • 買完域名后如何建設(shè)網(wǎng)站seo基礎(chǔ)課程
  • 維度 網(wǎng)站建設(shè)什么是軟文寫作
  • wordpress默認(rèn)logo圖片路徑佛山seo關(guān)鍵詞排名
  • 中國(guó)建設(shè)銀行吉林省分行官網(wǎng)站電子商務(wù)
  • 網(wǎng)頁(yè)設(shè)計(jì)技術(shù)論文青島seo關(guān)鍵字排名
  • php網(wǎng)站開(kāi)發(fā)實(shí)踐太原百度公司地址
  • 品牌網(wǎng)站建設(shè)哪好商丘關(guān)鍵詞優(yōu)化推廣
  • 天津做網(wǎng)站聯(lián)系方式優(yōu)化關(guān)鍵詞首頁(yè)排行榜
  • html5建站系統(tǒng)線下推廣方式有哪些
  • 網(wǎng)站qq在線客服代碼怎么安裝快速網(wǎng)站seo效果
  • 10大最佳免費(fèi)建站軟件推薦網(wǎng)站競(jìng)價(jià)推廣怎么做
  • 國(guó)外哪個(gè)網(wǎng)站做服裝百度怎么免費(fèi)推廣
  • wordpress適合大型網(wǎng)站嗎類似凡科建站的平臺(tái)