簡單LeetCode 陣列的相對排序

2021-10-03 11:24:38 字數 1560 閱讀 7002

給你兩個陣列,arr1 和 arr2,

arr2 中的元素各不相同

arr2 中的每個元素都出現在 arr1 中

對 arr1 中的元素進行排序,使 arr1 中項的相對順序和 arr2 中的相對順序相同。未在 arr2 **現過的元素需要按照公升序放在 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] 都出現在 arr1 中

先遍歷arr1中的元素個數,然後遍歷arr2按照arr1中對應元素的個數新增進結果陣列中,最後將剩餘的arr1中的元素按照原順序的元素個數迴圈新增。

class

solution

else

}for

(int i=

0;i) m.

erase

(iter);}

}for

(auto i=m.

begin()

;i!=m.

end(

);i++)}

return res;}}

;

先統計arr1中元素的數量,注意索引是arr1中的值,然後把arr2中的數按順序拿完,在把桶中剩下的按順序拿完。

public

int[

]relativesortarray

(int

arr1,

int[

] arr2)

//遍歷arr2,處理arr2**現的元素

int index =0;

for(

int i : arr2)

}//遍歷nums,處理剩下arr2中未出現的元素

for(

int i =

0; i < nums.length; i++)}

return res;

}

直接將arr2加上arr1減去arr2中的元素,並按照從小到大排序。然後按照arr2中的下標的順序對arr1進行排序,其餘的按照原來的順序。

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 1122 陣列的相對排序

題目 給你兩個陣列,arr1 和 arr2,arr2 中的元素各不相同,arr2 中的每個元素都出現在 arr1 中 對 arr1 中的元素進行排序,使 arr1 中項的相對順序和 arr2 中的相對順序相同。未在 arr2 現過的元素需要按照公升序放在 arr1 的末尾。示例 解題思路及 1.思路...

陣列的相對排序(LeetCode)

題目鏈結 給你兩個陣列,arr1 和 arr2,arr2 中的元素各不相同 arr2 中的每個元素都出現在 arr1 中 對 arr1 中的元素進行排序,使 arr1 中項的相對順序和 arr2 中的相對順序相同。未在 arr2 現過的元素需要按照公升序放在 arr1 的末尾。示例 輸入 arr1 ...

LeetCode 陣列的相對排序

給你兩個陣列,arr1 和 arr2,arr2 中的元素各不相同 arr2 中的每個元素都出現在 arr1 中 對 arr1 中的元素進行排序,使 arr1 中項的相對順序和 arr2 中的相對順序相同。未在 arr2 現過的元素需要按照公升序放在 arr1 的末尾。示例 輸入 arr1 2,3,1...