DDSA
Advertisement

2389. Longest Subsequence With Limited Sum

Time: O(n log n + q log n)
Space: O(n)

Approach

Sort nums; build prefix sums; binary search per query for largest prefix ≤ query.

2389.cs
C#
// Approach: Sort nums; build prefix sums; binary search per query for largest prefix ≤ query.
// Time: O(n log n + q log n) Space: O(n)

public class Solution
{
    public int[] AnswerQueries(int[] nums, int[] queries)
    {
        int[] ans = new int[queries.Length];

        Array.Sort(nums);

        for (int i = 0; i < queries.Length; ++i)
            ans[i] = NumOfElementsLessThan(nums, queries[i]);

        return ans;
    }

    private int NumOfElementsLessThan(int[] nums, int query)
    {
        int sum = 0;
        for (int i = 0; i < nums.Length; ++i)
        {
            sum += nums[i];
            if (sum > query)
                return i;
        }
        return nums.Length;
    }
}
Advertisement
Was this solution helpful?