本篇內(nèi)容介紹了“怎么理解LeetCode關(guān)于數(shù)組的相對(duì)排序”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到防城網(wǎng)站設(shè)計(jì)與防城網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋防城地區(qū)。給你兩個(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 的末尾。
示例:
輸入: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 中的每個(gè)元素 arr2[i] 都出現(xiàn)在 arr1 中
1、C++
先遍歷arr1中的元素個(gè)數(shù),然后遍歷arr2按照arr1中對(duì)應(yīng)元素的個(gè)數(shù)添加進(jìn)結(jié)果數(shù)組中,最后將剩余的arr1中的元素按照原順序的元素個(gè)數(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)計(jì)arr1中元素的數(shù)量,注意索引是arr1中的值,然后把a(bǔ)rr2中的數(shù)按順序拿完,在把桶中剩下的按順序拿完。
public int[] relativeSortArray(int[] arr1, int[] arr2) {
int[] nums = new int[1001];
int[] res = new int[arr1.length];
//遍歷arr1,統(tǒng)計(jì)每個(gè)元素的數(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)行排序,其余的按照原來(lái)的順序。
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ù)組的相對(duì)排序”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!