diff --git a/javascript/LeetCode/Array/645.js b/javascript/LeetCode/Array/645.js new file mode 100644 index 0000000..8760316 --- /dev/null +++ b/javascript/LeetCode/Array/645.js @@ -0,0 +1,33 @@ +/** + * 645. Set Mismatch + * + * 參數為數字陣列,從1至n,但內有重複的元素,找出重複的元素並調整成對的元素,變成1至N且無重複的元素 + * + * @param {number[]} nums + * @return {number[]} + */ +var findErrorNums = function(nums) { + // TC:O(N) + let map = new Map(); + let duplicate = 0, missing = 0; + for(let i = 1;i <= nums.length;++i){ + map.set(i,0); + } + // 增加或減少 + for(const ele of nums){ + map.set(ele,map.get(ele) - 1); + } + // console.log(map) + for(const [key,value] of map) { + if(value === -2){ + duplicate = key + } + if(value === 0){ + missing = key; + } + } + return [duplicate,missing]; +}; +let nums = [1,2,2,4]; +// [2,3] +console.log(findErrorNums(nums)); \ No newline at end of file diff --git a/javascript/index.js b/javascript/index.js index ab38037..990dd88 100644 --- a/javascript/index.js +++ b/javascript/index.js @@ -1385,32 +1385,6 @@ Query 2: The element at queries[2] = 5 is nums[5] = 3. The nearest index with th */ // console.log(solveQueries(nums,queries)); -/** - * 645. Set Mismatch - * - * 參數為數字陣列,從1至n,但內有重複的元素,找出它們並調整成對的元素 - * - * @param {number[]} nums - * @return {number[]} - */ -var findErrorNums = function(nums) { - let res = []; - let map = new Map(); - for(const ele of nums){ - map.has(ele) ? map.set(ele,map.get(ele) + 1 ) : map.set(ele,1); - } - // console.log(map) - for(const [key,value] of map) { - if(value >= 2){ - console.log(key); - - } - } -}; -let nums = [1,2,2,4]; -// [2,3] -// console.log(findErrorNums(nums)); - /** * 2864. Maximum Odd Binary Number @@ -1429,4 +1403,4 @@ var maximumOddBinaryNumber = function(s) { let s = "010"; // Output: "001" // Explanation: Because there is just one '1', it must be in the last position. So the answer is "001". -console.log(maximumOddBinaryNumber(s)); \ No newline at end of file +// console.log(maximumOddBinaryNumber(s)); \ No newline at end of file