LeetCode 關於陣列的相對排序
給你兩個陣列,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 中
1、C++
先遍歷arr1中的元素個數,然後遍歷arr2按照arr1中對應元素的個數新增進結果陣列中,最後將剩餘的arr1中的元素按照原順序的元素個數迴圈新增。
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、桶排序 鄭州婦科醫院哪家好
先統計arr1中元素的數量,注意索引是arr1中的值,然後把arr2中的數按順序拿完,在把桶中剩下的按順序拿完。
public int[] relativeSortArray(int[] arr1, int[] arr2) {
int[] nums = new int[1001];
int[] res = new int[arr1.length];
//遍歷arr1,統計每個元素的數量
for (int i : arr1) {
nums[i]++;
}
//遍歷arr2,處理arr2中出現的元素
int index = 0;
for (int i : arr2) {
while (nums[i]>0){
res[index++] = i;
nums[i]--;
}
}
//遍歷nums,處理剩下arr2中未出現的元素
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中的下標的順序對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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2678475/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LeetCode1122. 陣列的相對排序(20201114每日一題)LeetCode陣列排序每日一題
- 1122. 陣列的相對排序(計數排序 / 自定義排序)陣列排序
- 【LeetCode】905.按奇偶排序陣列LeetCode排序陣列
- 關於js陣列方法sort()負數排序的陷阱JS陣列排序
- Leetcode[陣列] 26. 刪除排序陣列中的重複項LeetCode陣列排序
- LeetCode 33——搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode-兩個排序陣列的中位數LeetCode排序陣列
- LeetCode C++ 劍指 Offer 51. 陣列中的逆序對【歸併排序/樹狀陣列/線段樹】LeetCodeC++陣列排序
- LeetCode 81——搜尋旋轉排序陣列 IILeetCode排序陣列
- LeetCode33. 搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode#33搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode33 搜尋旋轉排序陣列LeetCode排序陣列
- 【LeetCode(Java) - 33】搜尋旋轉排序陣列LeetCodeJava排序陣列
- leetCode33搜尋旋轉排序陣列LeetCode排序陣列
- 陣列的排序陣列排序
- LeetCode 4. 兩個排序陣列的中位數LeetCode排序陣列
- LeetCode-4. 兩個排序陣列的中位數LeetCode排序陣列
- ES6 陣列相關陣列
- LeetCode 493. 翻轉對(歸併排序 || 離散化+樹狀陣列)LeetCode排序陣列
- LeetCode 1329按矩陣對角線排序(java)LeetCode矩陣排序Java
- LeetCode每日一題: 按奇偶排序陣列(No.905)LeetCode每日一題排序陣列
- LeetCode_1636_按照頻率將陣列升序排序LeetCode陣列排序
- LeetCode C++ 56. Merge Intervals【排序/陣列】中等LeetCodeC++排序陣列
- leetcode, LC68:旋轉排序陣列搜尋LeetCode排序陣列
- 陣列排序陣列排序
- Java中陣列及相關類的使用Java陣列
- 第三章:查詢與排序(下)----------- 3.23 相關題解:排序陣列中找和的因子排序陣列
- LeetCode每日一題: 按奇偶排序陣列 II(No.27)LeetCode每日一題排序陣列
- leetcode-刪除排序陣列中的重複項+移除元素LeetCode排序陣列
- 關於陣列去重陣列
- 關於在類陣列中使用陣列方法陣列
- vue陣列操作遇到坑-關於陣列操作Vue陣列
- 陣列排序的實現陣列排序
- 1117陣列排序的技巧陣列排序
- 物件陣列排序物件陣列排序
- js陣列排序JS陣列排序
- JavaScript 陣列排序JavaScript陣列排序
- Golang刷LeetCode 26.刪除排序陣列中的重複項GolangLeetCode排序陣列