go語(yǔ)言題解LeetCode1122數(shù)組的相對(duì)排序
題目描述
1122. 數(shù)組的相對(duì)排序 - 力扣(LeetCode)
給你兩個(gè)數(shù)組,arr1 和 arr2,arr2 中的元素各不相同,arr2 中的每個(gè)元素都出現(xiàn)在 arr1 中。
對(duì) arr1 中的元素進(jìn)行排序,使 arr1 中項(xiàng)的相對(duì)順序和 arr2 中的相對(duì)順序相同。未在 arr2 中出現(xiàn)過(guò)的元素需要按照升序放在 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 中的每個(gè)元素 arr2[i] 都出現(xiàn)在 arr1 中
思路分析
最簡(jiǎn)單的就是 暴力法 了
解題思路
利用雙循環(huán)將數(shù)組1的數(shù)字依次與數(shù)組二相比較,相同則與前面元素交換位置
數(shù)組1中剩余元素利用sort函數(shù)進(jìn)行排序即可
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;
}
還有就是 計(jì)數(shù)排序
解題思路
與遞增遞減排序不同,本題是根據(jù)數(shù)組順序自定義排序,因此最適合計(jì)數(shù)排序來(lái)實(shí)現(xiàn)(桶排序)
因?yàn)轭}意說(shuō)明數(shù)組中元素在0~1000之間,因此定義一個(gè)容量為1000的桶
第一個(gè)循環(huán)對(duì)數(shù)組1中的元素進(jìn)行計(jì)數(shù),結(jié)果保存在桶中
第二個(gè)循環(huán)通過(guò)數(shù)組2,將重合的元素從數(shù)組1的0位置開(kāi)始插入
第三個(gè)循環(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語(yǔ)言題解LeetCode1122數(shù)組的相對(duì)排序的詳細(xì)內(nèi)容,更多關(guān)于go語(yǔ)言數(shù)組相對(duì)排序的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Go?Web實(shí)戰(zhàn)之創(chuàng)建項(xiàng)目及增加日志功能
這篇文章主要為大家詳細(xì)介紹了Go?Web項(xiàng)目中如何實(shí)現(xiàn)創(chuàng)建項(xiàng)目及增加日志功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-11-11
golang 實(shí)現(xiàn)Location跳轉(zhuǎn)方式
這篇文章主要介紹了golang 實(shí)現(xiàn)Location跳轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05
Golang 如何實(shí)現(xiàn)函數(shù)的任意類(lèi)型傳參
這篇文章主要介紹了Golang 實(shí)現(xiàn)函數(shù)的任意類(lèi)型傳參操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
golang爬蟲(chóng)colly?發(fā)送post請(qǐng)求
本文主要介紹了golang爬蟲(chóng)colly?發(fā)送post請(qǐng)求實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
細(xì)說(shuō)Go語(yǔ)言中空結(jié)構(gòu)體的奇妙用途
Go語(yǔ)言中,我們可以定義空結(jié)構(gòu)體,即沒(méi)有任何成員變量的結(jié)構(gòu)體,使用關(guān)鍵字?struct{}?來(lái)表示。這種結(jié)構(gòu)體似乎沒(méi)有任何用處,但實(shí)際上它在?Go?語(yǔ)言中的應(yīng)用非常廣泛,本文就來(lái)詳解講講2023-05-05

