怎么理解LeetCode關(guān)于數(shù)組的相對排序

本篇內(nèi)容介紹了“怎么理解LeetCode關(guān)于數(shù)組的相對排序”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、連平網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城網(wǎng)站制作、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為連平等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

給你兩個數(shù)組,arr1 和 arr2,

arr2 中的元素各不相同

arr2 中的每個元素都出現(xiàn)在 arr1 中

對 arr1 中的元素進(jìn)行排序,使 arr1 中項的相對順序和 arr2 中的相對順序相同。未在 arr2 中出現(xiàn)過的元素需要按照升序放在 arr1 的末尾。

示例:

輸入: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]

提示:

arr1.length, arr2.length <= 1000

0 <= arr1[i], arr2[i] <= 1000

arr2 中的元素 arr2[i] 各不相同

arr2 中的每個元素 arr2[i] 都出現(xiàn)在 arr1 中

1、C++

先遍歷arr1中的元素個數(shù),然后遍歷arr2按照arr1中對應(yīng)元素的個數(shù)添加進(jìn)結(jié)果數(shù)組中,最后將剩余的arr1中的元素按照原順序的元素個數(shù)循環(huán)添加。

class Solution {

public:

vector relativeSortArray(vector& arr1, vector& arr2) {

map m;

int s1 = arr1.size(), s2 = arr2.size();

vector res;

for(int i=0;i

auto iter = m.find(arr1[i]);

if(iter!=m.end()){

int temp = m[arr1[i]]+1;

m.erase(arr1[i]);

m.insert(pair(arr1[i], temp));

}else{

m.insert(pair(arr1[i], 1));

}

}

for(int i=0;i

auto iter = m.find(arr2[i]);

if(iter!=m.end()){

for(int j=0;jsecond;j++){

res.push_back(iter->first);

}

m.erase(iter);

}

}

for(auto i=m.begin();i!=m.end();i++){

for(int k=0;ksecond;k++){

res.push_back(i->first);

}

}

return res;

}

};

2、桶排序鄭州婦科醫(yī)院哪家好 http://fk.zyfuke.com/

先統(tǒng)計arr1中元素的數(shù)量,注意索引是arr1中的值,然后把arr2中的數(shù)按順序拿完,在把桶中剩下的按順序拿完。

public int[] relativeSortArray(int[] arr1, int[] arr2) {

int[] nums = new int[1001];

int[] res = new int[arr1.length];

//遍歷arr1,統(tǒng)計每個元素的數(shù)量

for (int i : arr1) {

nums[i]++;

}

//遍歷arr2,處理arr2中出現(xiàn)的元素

int index = 0;

for (int i : arr2) {

while (nums[i]>0){

res[index++] = i;

nums[i]--;

}

}

//遍歷nums,處理剩下arr2中未出現(xiàn)的元素

for (int i = 0; i < nums.length; i++) {

while (nums[i]>0){

res[index++] = i;

nums[i]--;

}

}

return res;

}

3、python

直接將arr2加上arr1減去arr2中的元素,并按照從小到大排序。然后按照arr2中的下標(biāo)的順序?qū)rr1進(jìn)行排序,其余的按照原來的順序。

class Solution:

def relativeSortArray(self, arr1: List[int], arr2: List[int]) -> List[int]:

arr2 += sorted(set(arr1)-set(arr2))

arr1.sort(key=arr2.index)

return arr1

“怎么理解LeetCode關(guān)于數(shù)組的相對排序”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

名稱欄目:怎么理解LeetCode關(guān)于數(shù)組的相對排序
網(wǎng)址分享:http://www.muchs.cn/article18/ihepdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、用戶體驗、品牌網(wǎng)站設(shè)計動態(tài)網(wǎng)站、域名注冊Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)