From 0acffbf9984a2d7114c7fe54b11edacc6da8ed95 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Sat, 11 Jul 2026 22:30:34 -0400 Subject: [PATCH] init(Easy/Array): add solution for 1636. Sort Array by Increasing Frequency init(Medium/Hash Table): add solution for 451. Sort Characters By Frequency --- ...1636.sort-array-by-increasing-frequency.js | 52 +++++++++++++++ .../451.sort-characters-by-frequency.js | 64 +++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 Easy/Array/1636.sort-array-by-increasing-frequency.js create mode 100644 Medium/Hash Table/451.sort-characters-by-frequency.js diff --git a/Easy/Array/1636.sort-array-by-increasing-frequency.js b/Easy/Array/1636.sort-array-by-increasing-frequency.js new file mode 100644 index 0000000..2ace9f9 --- /dev/null +++ b/Easy/Array/1636.sort-array-by-increasing-frequency.js @@ -0,0 +1,52 @@ +/* + * 1636. Sort Array by Increasing Frequency + * Difficulty: Easy + * https://leetcode.com/problems/sort-array-by-increasing-frequency/ + * + * ────────────────────────────────────────────────── + * + * Given an array of integers nums, sort the array in increasing order + * based on the frequency of the values. If multiple values have the same + * frequency, sort them in decreasing order. + * + * Return the sorted array. + * + * + * + * Example 1: + * + * Input: nums = [1,1,2,2,2,3] + * Output: [3,1,1,2,2,2] + * Explanation: '3' has a frequency of 1, '1' has a frequency of 2, and + * '2' has a frequency of 3. + * + * Example 2: + * + * Input: nums = [2,3,1,3,2] + * Output: [1,3,3,2,2] + * Explanation: '2' and '3' both have a frequency of 2, so they are + * sorted in decreasing order. + * + * Example 3: + * + * Input: nums = [-1,1,-6,4,5,-6,1,4,1] + * Output: [5,-1,4,4,-6,-6,1,1,1] + * + * + * + * Constraints: + * + * • 1 <= nums.length <= 100 + * + * • -100 <= nums[i] <= 100 + */ + +/** + * @param {number[]} nums + * @return {number[]} + */ +var frequencySort = function (nums) { + const freq = {}; + for (let n of nums) freq[n] = (freq[n] || 0) + 1; + return nums.sort((a, b) => freq[a] - freq[b] || b - a); +}; diff --git a/Medium/Hash Table/451.sort-characters-by-frequency.js b/Medium/Hash Table/451.sort-characters-by-frequency.js new file mode 100644 index 0000000..0357d5c --- /dev/null +++ b/Medium/Hash Table/451.sort-characters-by-frequency.js @@ -0,0 +1,64 @@ +/* + * 451. Sort Characters By Frequency + * Difficulty: Medium + * https://leetcode.com/problems/sort-characters-by-frequency/ + * + * ────────────────────────────────────────────────── + * + * Given a string s, sort it in decreasing order based on the frequency + * of the characters. The frequency of a character is the number of times + * it appears in the string. + * + * Return the sorted string. If there are multiple answers, return any + * of them. + * + * + * + * Example 1: + * + * Input: s = "tree" + * Output: "eert" + * Explanation: 'e' appears twice while 'r' and 't' both appear once. + * So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also + * a valid answer. + * + * Example 2: + * + * Input: s = "cccaaa" + * Output: "aaaccc" + * Explanation: Both 'c' and 'a' appear three times, so both "cccaaa" + * and "aaaccc" are valid answers. + * Note that "cacaca" is incorrect, as the same characters must be + * together. + * + * Example 3: + * + * Input: s = "Aabb" + * Output: "bbAa" + * Explanation: "bbaA" is also a valid answer, but "Aabb" is incorrect. + * Note that 'A' and 'a' are treated as two different characters. + * + * + * + * Constraints: + * + * • 1 <= s.length <= 5 * 10^5 + * + * • s consists of uppercase and lowercase English letters and digits. + */ + +/** + * @param {string} s + * @return {string} + */ +var frequencySort = function (s) { + // count the frequency of each character + const freq = {}; + for (let c of s) freq[c] = (freq[c] || 0) + 1; + + // sort the characters by frequency + return s + .split("") + .sort((a, b) => freq[b] - freq[a] || a.localeCompare(b)) + .join(""); +};