From a771b8ee6f483283d28fae4c2f9d2e09cf92a83a Mon Sep 17 00:00:00 2001 From: suhwan2004 Date: Thu, 12 Dec 2024 12:41:06 +0900 Subject: [PATCH 1/2] Rank Transform of an Array --- suhwan2004/Rank Transform of an Array.js | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 suhwan2004/Rank Transform of an Array.js diff --git a/suhwan2004/Rank Transform of an Array.js b/suhwan2004/Rank Transform of an Array.js new file mode 100644 index 0000000..08d97f3 --- /dev/null +++ b/suhwan2004/Rank Transform of an Array.js @@ -0,0 +1,33 @@ +/** + * @param {number[]} arr + * @return {number[]} + */ + +/* +N === arr.length +Time : O(NlogN), Space : O(N) +ALGO : for +DS : hashMap, Array +Constraints + - 0 <= arr.length <= 10^5 + - -10^9 <= arr[i] <= 10^9 +Edge Case : arr.length === 0 일시, return arr +*/ +var arrayRankTransform = function (arr) { + if (arr.length === 0) { + return arr; + } + const sortMap = new Map(); + const sortArr = [...arr].sort((a, b) => a - b); + + let rank = 1; + for (let i = 0; i < sortArr.length; i++) { + if (i !== 0 && sortArr[i] !== sortArr[i - 1]) { + rank += 1; + sortMap.set(sortArr[i], rank); + } else { + sortMap.set(sortArr[i], rank); + } + } + return arr.map((cur) => sortMap.get(cur)); +}; From 326fc4773aac906ae128af5e331cdbdf463ff8ac Mon Sep 17 00:00:00 2001 From: suhwan2004 Date: Sun, 15 Dec 2024 23:24:01 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=8F=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- suhwan2004/Rank Transform of an Array.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/suhwan2004/Rank Transform of an Array.js b/suhwan2004/Rank Transform of an Array.js index 08d97f3..da09bab 100644 --- a/suhwan2004/Rank Transform of an Array.js +++ b/suhwan2004/Rank Transform of an Array.js @@ -23,11 +23,9 @@ var arrayRankTransform = function (arr) { let rank = 1; for (let i = 0; i < sortArr.length; i++) { if (i !== 0 && sortArr[i] !== sortArr[i - 1]) { - rank += 1; - sortMap.set(sortArr[i], rank); - } else { - sortMap.set(sortArr[i], rank); + rank++; } + sortMap.set(sortArr[i], rank); } return arr.map((cur) => sortMap.get(cur)); };