js有序數組的連接問題_javascript技巧
1.前言
昨天碰到一道關於如何解決有序數組的連接問題,這是一個很常見的問題。但這裡要考慮到程式碼的效率問題,因為要連接的陣列都是有序的,這是一個非常重要的前提條件。
2.簡單但效率不高的演算法
我首先想到的是使用內建的concat方法,然後再對其進行排序,這種方法完全沒有考慮到數組是有序的前提條件,代碼如下:
f arrA.concat(arrB).sort();
}
大概思路:就是同時對兩個數組進行遍歷,設定兩個標誌(i,j)用於記錄遍歷的位置,將兩個數組中較小的那個值插入新數組中,接著再將標誌往前移動一個位置,重複比較,直到搜尋值都插入陣列。第一次做的時候判斷條件寫錯了,所以出現了死循環,暴露了自己演算法能力還是挺薄弱的。
i , j , k, lenA = arrA.length, lenB = arrB.length , allLen = lenA lenB,result = [];
for(i=0,j=0,k =0; k if(i = lenB || arrA[i] 🎜> result.push(arrB[j ]);
}
}
,6,7,10];
console.log(con(a,b)); //[1,2,3,4,5,6,7,10]
將這個演算法與上面的方法1,在jsperf進行效能對比,發現第二種演算法的效率明顯優於第一種。不相信就猛擊
這裡
。
假如增加數組的個數,;例如A = [1,5],B = [2,6],C = [ 3,4].......K = [....],求合併的陣列。
當時被問到這個問題,第一感覺就是很像」歸併演算法“,但是又一想使用歸併演算法是用不上數組有序這個前提條件的。接著又想到了堆排序、快排序等演算法,發現就是無法很有效地用上數組有序這個前提條件,最後選擇放棄。面試完依然沒有思路,想了好久不知道如何有效率的解決這個問題。快回宿舍的時候,師弟說了一句」又要過節了「,」又「字點醒了我,代碼如下:
function conMore(){
var outArr = [], i ,len = argument.length , result = [];
for(i = 0 ; i
}
if(result.length === 0){
result = outArr[0];
}
for(i=1 ;i 結果 = con(結果,outerArr[i]);
}
回傳結果;
}
function con(arrA,arrB){
var i , j , k, lenA = arrA.lenghth, lenB = var i , j , k, lenA = arrA.lengarrth, lenB = lenB,結果= [];
for(i=0,j=0,k =0; k if(i = lenB || arrA[i] 效果.push(arrA[i ]);
}else{
result.push(arrB[j ]);
}
}
回傳結果;
}
var a = [1,4,7], b = [2,5,8], c = [3,6,99 ,10];
console.log(conMore(a,b,c)); //[1,2,3,4,5,6,7,8,9,10]
再次使用jsperf對程式碼的效能進行測試分析,結果請猛擊這裡.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

更新了最新的win11系統之後有不少的用戶不清楚該怎麼連接手柄進行遊戲,為此我們今天專給你們帶來了win11連接手柄詳細教程,如果你還沒有完成連接就來看看怎麼操作吧。 win11怎麼連接手把:1、點選下方的開始然後進入windows設定開啟「控制台」。 2.進入之後就可以找到「檢視裝置和印表機」進行進入。 3.此時你能夠看到手把設備的訊息,進行連接就行了。 4.連接成功之後出現一個√,就可以完成連接了。

很多時候我們都需要用電腦來連接印表機進行各種列印的操作,但有時候有些使用者會遇到win7無法連接印表機0x0000011b這種問題狀況,以下就是具體的因應解決方法。 win7無法連接印表機0x0000011b1、快捷鍵“win+r”,輸入“regedit”2、找到以下路徑“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print”3、右鍵新建值“DWORD(32位元)值(D)並且Set\Control\Print”3、右鍵新建值“DWORD(32位元)值(D)並且數值設定為0。將新建專案命名為“RpcAuthnLevelPri

為了確保您的網路連線正常運作或解決問題,有時您需要檢查Windows11上的網路連線詳細資訊。透過這樣做,您可以查看各種信息,包括您的IP位址、MAC位址、連結速度、驅動程式版本等,在本指南中,我們將向您展示如何做到這一點。如何在Windows11上找到網路連線詳細資訊? 1.使用「設定」應用程式按+鍵開啟Windows設定。 WindowsI接下來,導覽至左窗格中的網路和互聯網,然後選擇您的網路類型。在我們的例子中,這就是乙太網路。如果您使用的是無線網絡,請改為選擇Wi-Fi網路。在螢幕底部,您應該會看

keep體脂秤怎麼連接?keep是有專門設計的體脂秤,但是多數的用戶不知道如何連接keep的體脂秤,接下來就是小編為用戶帶來的keep體脂秤連接方法圖文教程,有興趣的用戶快來一起看看吧! keep體脂秤怎麼連接1、先打開keep軟體,進入到主頁點選右下角【我的】選擇其中的【智慧硬體】;2、然後在我的智慧型裝置頁面,中間【新增裝置】按鈕;3 、之後在選擇你要加入的設備介面,選擇【智慧體脂/體重計】;4、接著在選擇設備型號頁面,點選【keep體脂秤】選項;5、最後在下圖所示的介面,最底部的【立即添加】

Win10連接網路受限解決方案隨著科技的快速發展,網路成為了人們生活中不可或缺的一部分。然而,有時我們在使用Windows10作業系統的電腦連接網路時可能會遇到一些問題,其中之一就是連接受限制。在這種情況下,我們無法正常存取網頁、下載檔案或使用網路功能。那麼,有什麼辦法能夠解決這個問題呢?本文將為您介紹幾種常見的解決方案。一、檢查網路連線設定首先,我

連接印表機0x0000011b是什麼意思在使用電腦、筆記型電腦或其他裝置時,使用者常常會遇到各種錯誤代碼。其中,0x0000011b是一種常見的印表機連線錯誤代碼。那麼,連接印表機0x0000011b到底是什麼意思呢?首先,我們需要了解一下印表機連接的基本原理。當我們需要從電腦列印文件時,通常需要將印表機連接到電腦上,以便二者之間進行資料傳輸。這種連接可以透過

大家在使用Edge瀏覽器訪問網頁的時候,有遇到提示你的連接不是專用連接,導致網頁瀏覽失敗的情況嗎?這是怎麼回事?很多朋友遇到這種問題都不知道該如何處理,可以看看下面三個解決方法。 方法一(簡單粗暴):在edge瀏覽器中,您可以透過進入設定並關閉安全性功能,然後在網站權限中阻止位置權限來嘗試解決原先報錯的網站無法存取的問題。需要注意的是,這種方法的有效性和持續時間可能會有所不同,無法確定特定的效果。重新啟動瀏覽器後,您可以嘗試造訪網站,看看是否有問題解決。 方法二: 調整鍵盤為英文輸

1、將耳機放在耳機盒中並保持蓋子打開,長按盒子上的按鍵使耳機進入進入配對狀態。 2.開啟手錶音樂功能並選擇藍牙耳機,或在手錶設定功能選擇藍牙耳機。 3.在手錶選擇該耳機即可配對成功。
