刺殺小說家+侍神令+哪吒重生:影票通通20元!
阿新 • • 發佈:2021-02-06
在陣列中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個陣列中的逆序對的總數。
示例 1:
輸入: [7,5,6,4] 輸出: 5
限制:
0 <= 陣列長度 <= 50000
使用歸併排序完成
/** * @param {number[]} nums * @return {number} */ var reversePairs = function (nums) { let res = 0; var mergeSort = function (nums) { if (nums.length <= 1) { return nums } let mid = Math.floor(nums.length / 2); // console.log(mid) let leftarr = nums.slice(0, mid); let rightrr = nums.slice(mid); return merge(mergeSort(leftarr), mergeSort(rightrr)) function merge(left, right) { let result = []; while (left.length > 0 && right.length > 0) { if (left[0] > right[0]) { res += left.length result.push(right.shift()); } else { result.push(left.shift()); } } /* 當左右陣列長度不等.將比較完後剩下的陣列項鍊接起來即可 */ return result.concat(left).concat(right); } }; mergeSort(nums) return res } console.log(reversePairs([1, 3, 2, 3, 1]))
bibili講解:https://space.bilibili.com/390775036/channel/detail?cid=123574