Back to all solutions

#2860 - Happy Students

Problem Description

You are given a 0-indexed integer array nums of length n where n is the total number of students in the class. The class teacher tries to select a group of students so that all the students remain happy.

The ith student will become happy if one of these two conditions is met:

  • The student is selected and the total number of selected students is strictly greater than nums[i].
  • The student is not selected and the total number of selected students is strictly less than nums[i].

Return the number of ways to select a group of students so that everyone remains happy.

Solution

/**
 * @param {number[]} nums
 * @return {number}
 */
var countWays = function(nums) {
  nums.sort((a, b) => a - b);
  let result = 0;
  let selected = 0;

  if (0 < nums[0]) result++;

  for (let i = 0; i < nums.length; i++) {
    selected++;
    if (selected > nums[i] && (i + 1 === nums.length || selected < nums[i + 1])) {
      result++;
    }
  }

  return result;
};