LeetCode - relative sort array
给你两个数组,arr1 和 arr2
arr1 中的元素各不相同
arr2 中的每个元素都出现在 arr1 中
对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。
上面這一段是LeetCode中文站的題目說明,對於很難理解英文題目的人而言應該是個不錯的選擇,通常我會看完題目後再回到英文版去解答,這一題的意思其實就是讓arr1的數字,依照arr2的順序來排列,因為arr2的順序是2,1,4,3,9,6,所以把arr1裡面的2都放在前面,接著放1,4,3,9,6這些數字,都放完之後,把剩餘的數字依照昇冪排序即可
VSCode有一個外掛可以很方便的練習,就不多介紹了,自行觀看:leetcode
Test Case
输入: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]
Solution
1 | var relativeSortArray = function(arr1, arr2) { |
- 先宣告好變數來存放arr2存在的資料、以及不存在的資料
- 利用for迴圈處理arr1,存在arr2的數字表示需要篩選出來,不存在的就放著等最後的排序
- 迴圈跑完後將兩個部分結合再一起,第二個部分再排序即可