Destroying Asteroids

Medium
Watch on YouTube ↗

Solution


/************************* O(nlogn) Sorting Solution************************ */
class Solution {
    public boolean asteroidsDestroyed(int m, int[] nums) {
        Arrays.sort(nums);
        long mass = m;

        for(int i=0; i<nums.length; i++) {
            if(nums[i] <= mass)
                mass += nums[i];
            else return false;
        }
        return true;
    }
}
/************************ O(n) using counting sort************************ */
class Solution {
    public boolean asteroidsDestroyed(int mass, int[] nums) {
        
        long arr[] = new long[100001];

        for(int num : nums) {
            arr[num] ++;
        }

        long m = mass;

        for(int i=1; i<arr.length; i++) {
            if(arr[i] > 0) {
                if(m >= i) {
                    m+=(i*arr[i]);
                } else return false;
                    
            } 
        }
        return true;
    }
}