Count Pairs That Form a Complete Day I

EasyArrayHash TableCounting

Solution

Solution1: Brute Force

export function countCompleteDayPairs(hours: number[]): number {
  const n = hours.length;
 
  let answer = 0;
  for (let i = 0; i < n; i++) {
    for (let j = i + 1; j < n; j++) {
      if ((hours[i] + hours[j]) % 24 === 0) {
        answer += 1;
      }
    }
  }
  return answer;
}

Complexity

  • Time: O(n^2)
  • Space: O(1)

Solution2: Hash Map

export function countCompleteDayPairs(hours: number[]): number {
  let answer = 0;
  const counter = new Map<number, number>();
  for (const hour of hours) {
    const remainder = hour % 24;
    answer += counter.get((24 - remainder) % 24) ?? 0;
    counter.set(remainder, (counter.get(remainder) ?? 0) + 1);
  }
  return answer;
}

Complexity

  • Time: O(n)
  • Space: O(1)
    • 0부터 23까지의 나머지만을 저장하기 때문에 복잡도는 O(1)이 된다.