Faaez Razeen

Plates Between Candles

  • 2 min read
  • Array
  • LC-Medium

3 years ago

Solution

TimeSpaceExplanation
O()O()
def platesBetweenCandles(self, s: str, queries: List[List[int]]) -> List[int]: n = len(s) left = [-1] * n # index of closest candle to the left right = [-1] * n # index of closest candle to the right num_candles_to_right = [0] * n num_candles, closest_candle_index = 0, -1 for i in range(n): if s[i] == '|': num_candles += 1 closest_candle_index = i left[i] = closest_candle_index num_candles, closest_candle_index = 0, -1 for i in range(n - 1, -1, -1): num_candles_to_right[i] = num_candles if s[i] == '|': num_candles += 1 closest_candle_index = i right[i] = closest_candle_index ans = [] for start, end in queries: if start == end: ans.append(0) continue new_start = right[start] new_end = left[end] num_candles_in_window = num_candles_to_right[new_start] - num_candles_to_right[new_end] num_candles = (new_end - new_start) - num_candles_in_window ans.append(max(0, num_candles)) return ans