Untitled

 avatar
unknown
plain_text
2 months ago
1.2 kB
4
Indexable
import java.util.*;

public class FrequencySort {
    public static int[] frequencySort(int[] nums) {
        Map<Integer, Integer> freqMap = new HashMap<>();
        
        // Step 1: Count frequencies
        for (int num : nums) {
            freqMap.put(num, freqMap.getOrDefault(num, 0) + 1);
        }

        // Step 2: Sort with a custom comparator
        Arrays.sort(nums, (a, b) -> {
            int freqA = freqMap.get(a), freqB = freqMap.get(b);
            if (freqA == freqB) {
                return Integer.compare(b, a); // Descending order if frequency is same
            }
            return Integer.compare(freqA, freqB); // Ascending order of frequency
        });

        return nums;
    }

    public static void main(String[] args) {
        int[] nums1 = {1, 1, 2, 2, 2, 3};
        System.out.println(Arrays.toString(frequencySort(nums1))); // Output: [3,1,1,2,2,2]

        int[] nums2 = {2, 3, 1, 3, 2};
        System.out.println(Arrays.toString(frequencySort(nums2))); // Output: [1,3,3,2,2]

        int[] nums3 = {-1, 1, -6, 4, 5, -6, 1, 4, 1};
        System.out.println(Arrays.toString(frequencySort(nums3))); // Output: [5,-1,4,4,-6,-6,1,1,1]
    }
}
Editor is loading...
Leave a Comment