package LeetCode_319
/**
* 319. Bulb Switcher
* https://leetcode.com/problems/bulb-switcher/
*
* There are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn off every second bulb.
* On the third round, you toggle every third bulb (turning on if it's off or turning off if it's on).
* For the i-th round, you toggle every i bulb. For the n-th round, you only toggle the last bulb.
* Find how many bulbs are on after n rounds.
*
Example:
Input: 3
Output: 1
Explanation:
At first, the three bulbs are [off, off, off].
After first round, the three bulbs are [on, on, on].
After second round, the three bulbs are [on, off, on].
After third round, the three bulbs are [on, off, off].
So you should return 1, because there is only one bulb is on.
* */
class Solution {
/*
* solution: Math, Time complexity:O(sqrt(n)), Space complexity:O(1)
* init: X X X X X
first: √ √ √ √ √
second: √ X √ X √
third: √ X X X √
fourth: √ X X √ √
fifth: √ X X √ X
all squared bulbs will be lit
* */
fun bulbSwitch(n: Int): Int {
var result = 1
while (result * result <= n) {
result++
}
return result - 1
}
}