Skip to content

Commit 738bc45

Browse files
committed
added bulbSwitcher
1 parent 25a2a85 commit 738bc45

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

‎README.md

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ LeetCode
88

99
| # | Title | Solution | Difficulty |
1010
|---| ----- | -------- | ---------- |
11+
|319|[Bulb Switcher](https://leetcode.com/problems/bulb-switcher/) | [C++](./algorithms/cpp/bulbSwitcher/bulbSwitcher.cpp)|Medium|
1112
|315|[Count of Smaller Numbers After Self](https://leetcode.com/problems/count-of-smaller-numbers-after-self/) | [C++](./algorithms/cpp/countOfSmallerNumbersAfterSelf/countOfSmallerNumbersAfterSelf.cpp)|Hard|
1213
|307|[Range Sum Query - Mutable](https://leetcode.com/problems/range-sum-query-mutable/) | [C++](./algorithms/cpp/rangeSumQuery-Immutable/rangeSumQuery-Mutable/RangeSumQueryMutable.cpp)|Medium|
1314
|306|[Additive Number](https://leetcode.com/problems/additive-number/) | [C++](./algorithms/cpp/additiveNumber/AdditiveNumber.cpp)|Medium|
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Source : https://leetcode.com/problems/bulb-switcher/
2+
// Author : Calinescu Valentin
3+
// Date : 2015-12-28
4+
5+
/***************************************************************************************
6+
*
7+
* There are n bulbs that are initially off. You first turn on all the bulbs. Then, you
8+
* turn off every second bulb. On the third round, you toggle every third bulb (turning
9+
* on if it's off or turning off if it's on). For the nth round, you only toggle the
10+
* last bulb. Find how many bulbs are on after n rounds.
11+
*
12+
* Example:
13+
*
14+
* Given n = 3.
15+
*
16+
* At first, the three bulbs are [off, off, off].
17+
* After first round, the three bulbs are [on, on, on].
18+
* After second round, the three bulbs are [on, off, on].
19+
* After third round, the three bulbs are [on, off, off].
20+
*
21+
* So you should return 1, because there is only one bulb is on.
22+
*
23+
***************************************************************************************/
24+
/*
25+
* Solution 1 - O(1)
26+
* =========
27+
*
28+
* We notice that for every light bulb on position i there will be one toggle for every
29+
* one of its divisors, given that you toggle all of the multiples of one number. The
30+
* total number of toggles is irrelevant, because there are only 2 possible positions(on,
31+
* off). We quickly find that 2 toggles cancel each other so given that the start position
32+
* is always off a light bulb will be in if it has been toggled an odd number of times.
33+
* The only integers with an odd number of divisors are perfect squares(because the square
34+
* root only appears once, not like the other divisors that form pairs). The problem comes
35+
* down to finding the number of perfect squares <= n. That number is the integer part of
36+
* the square root of n.
37+
*
38+
*/
39+
class Solution {
40+
public:
41+
int bulbSwitch(int n) {
42+
return (int)sqrt(n);
43+
}
44+
};

0 commit comments

Comments
 (0)