go語言題解LeetCode1122數(shù)組的相對排序
題目描述
1122. 數(shù)組的相對排序 - 力扣(LeetCode)
給你兩個數(shù)組,arr1
和 arr2
,arr2
中的元素各不相同,arr2
中的每個元素都出現(xiàn)在 arr1 中。
對 arr1
中的元素進行排序,使 arr1
中項的相對順序和 arr2
中的相對順序相同。未在 arr2
中出現(xiàn)過的元素需要按照升序放在 arr1
的末尾。
示例 1:
輸入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6] 輸出:[2,2,2,1,4,3,3,9,6,7,19]
示例 2:
輸入:arr1 = [28,6,22,8,44,17], arr2 = [22,28,8,6] 輸出:[22,28,8,6,17,44]
提示:
1 <= arr1.length, arr2.length <= 1000
0 <= arr1[i], arr2[i] <= 1000
arr2 中的元素 arr2[i] 各不相同
arr2 中的每個元素 arr2[i] 都出現(xiàn)在 arr1 中
思路分析
最簡單的就是 暴力法 了
解題思路
利用雙循環(huán)將數(shù)組1的數(shù)字依次與數(shù)組二相比較,相同則與前面元素交換位置
數(shù)組1中剩余元素利用sort函數(shù)進行排序即可
vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) { int tmp = 0; for(int i = 0;i<arr2.size();++i) for(int j = 0;j<arr1.size();++j){ if(arr1[j] == arr2[i]){ swap(arr1[j],arr1[tmp]); ++tmp; } } sort(arr1.begin()+tmp,arr1.end()); return arr1; }
還有就是 計數(shù)排序
解題思路
與遞增遞減排序不同,本題是根據(jù)數(shù)組順序自定義排序,因此最適合計數(shù)排序來實現(xiàn)(桶排序)
因為題意說明數(shù)組中元素在0~1000之間,因此定義一個容量為1000的桶
第一個循環(huán)對數(shù)組1中的元素進行計數(shù),結(jié)果保存在桶中
第二個循環(huán)通過數(shù)組2,將重合的元素從數(shù)組1的0位置開始插入
第三個循環(huán),搜索桶中剩余的數(shù)組1元素,并把它們插入到數(shù)組1的后面。
vector<int> relativeSortArray(vector<int>& arr1, vector<int>& arr2) { vector<int> count(1001); for (int i = 0; i<arr1.size(); i++) { count[arr1[i]]++; } int k = 0; for (int i = 0; i<arr2.size(); i++) { while (count[arr2[i]]>0) { arr1[k++] = arr2[i]; count[arr2[i]]--; } } for (int i = 0; i < count.size(); i++) { while (count[i] >0) { arr1[k++] = i; count[i]--; } } return arr1; }
以上就是go語言題解LeetCode1122數(shù)組的相對排序的詳細內(nèi)容,更多關(guān)于go語言數(shù)組相對排序的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
golang語言http協(xié)議get拼接參數(shù)操作
這篇文章主要介紹了golang語言http協(xié)議get拼接參數(shù)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12Golang中結(jié)構(gòu)體映射mapstructure庫深入詳解
mapstructure用于將通用的map[string]interface{}解碼到對應(yīng)的 Go 結(jié)構(gòu)體中,或者執(zhí)行相反的操作。很多時候,解析來自多種源頭的數(shù)據(jù)流時,我們一般事先并不知道他們對應(yīng)的具體類型。只有讀取到一些字段之后才能做出判斷2023-01-01基于Golang?container/list實現(xiàn)LRU緩存
Least?Recently?Used?(LRU)?,即逐出最早使用的緩存,這篇文章主要為大家介紹了如何基于Golang?container/list實現(xiàn)LRU緩存,感興趣的可以了解下2023-08-08Golang發(fā)送Get和Post請求的實現(xiàn)
做第三方接口有時需要用Get或者Post請求訪問,本文主要介紹了Golang發(fā)送Get和Post請求的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05