Skip to content

Commit a7c4f8c

Browse files
committed
HappyNumber: add YouTube link, adjust naming of field/method
1 parent d708170 commit a7c4f8c

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ they contain enough code which describes implementation in a natural way.
207207
| Подсчет способов подъема по лестнице (leetcode) | [Youtube](https://youtu.be/bjE3KQM4ko4) | [Code](src/main/java/by/andd3dfx/common/ClimbingStairs.java) |
208208
| Преобразование римской записи числа в арабскую (leetcode) | [Youtube](https://youtu.be/vlKjGPFyltU) | [Code](src/main/java/by/andd3dfx/numeric/RomanToInteger.java) |
209209
| Преобразование арабской записи числа в римскую (leetcode) | [Youtube](https://youtu.be/83hLrZyfxeU) | [Code](src/main/java/by/andd3dfx/numeric/IntegerToRoman.java) |
210-
| Поиск анаграммы (leetcode) (2 решения) | [Youtube](https://youtu.be/8doD_ZqlHL0) | [Code](src/main/java/by/andd3dfx/common/ValidAnagram.java) |
210+
| Поиск анаграммы (2 решения) (leetcode) | [Youtube](https://youtu.be/8doD_ZqlHL0) | [Code](src/main/java/by/andd3dfx/common/ValidAnagram.java) |
211211
| Поиск наиболее длинного слова из словаря, которое можно сложить из заданного набора символов | [Youtube](https://youtu.be/LQeAY_jx3SA) | [Code](src/main/java/by/andd3dfx/string/LongestDictWordsFromCharacters.java) |
212212
| Определение простых делителей, меньших заданного числа. Решето Эратосфена (4 решения) | [Youtube](https://youtu.be/VWP8mvmDRNc) | [Code](src/main/java/by/andd3dfx/numeric/AmountOfPrimeNumbers.java) |
213213
| Поиск для заданного элемента массива k соседних элементов, ближайших к нему по величине (Яндекс) | [Youtube](https://youtu.be/bB0v2pcE1Do) | [Code](src/main/java/by/andd3dfx/numeric/KNearestNumbers.java) |
@@ -230,6 +230,7 @@ they contain enough code which describes implementation in a natural way.
230230
| Рефакторинг Spring Boot сервиса из тестового задания | [Youtube](https://youtu.be/esueccOEQZE) | [Code](https://github.com/andrei-punko/voting-service) |
231231
| Ревью кода из интервью #6 (LIVE) | [Youtube](https://youtu.be/-OOgpwq9bMI) | - |
232232
| Поиск маршрута спуска золотоискателя с горы | [Youtube](https://youtu.be/UVwWmVbSq9g) | [Code](src/main/java/by/andd3dfx/dynamic/GoldDigger.java) |
233+
| Счастливое число (2 решения) (leetcode) | [Youtube](https://youtu.be/9viwbL63DnU) | [Code](src/main/java/by/andd3dfx/numeric/HappyNumber.java) |
233234

234235
## Materials & notes
235236

src/main/java/by/andd3dfx/numeric/HappyNumber.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,40 +27,42 @@
2727
* Input: n = 2
2828
* Output: false
2929
* </pre>
30+
*
31+
* @see <a href="https://youtu.be/9viwbL63DnU">Video solution</a>
3032
*/
3133
public class HappyNumber {
3234

3335
public static boolean isHappyUsingMemory(int n) {
34-
Set<Integer> set = new HashSet<>();
36+
Set<Integer> numbers = new HashSet<>();
3537

36-
var tmp = getSumOfSquares(n);
37-
while (tmp != 1 && set.add(tmp)) {
38-
tmp = getSumOfSquares(tmp);
38+
var tmp = sumOfDigitSquares(n);
39+
while (tmp != 1 && numbers.add(tmp)) {
40+
tmp = sumOfDigitSquares(tmp);
3941
}
4042
return tmp == 1;
4143
}
4244

4345
public static boolean isHappyUsing2Pointers(int n) {
44-
var p1 = getSumOfSquares(n);
45-
var p2 = getSumOfSquares(p1);
46+
var p1 = sumOfDigitSquares(n);
47+
var p2 = sumOfDigitSquares(p1);
4648

4749
do {
4850
// p1: 1 step
49-
p1 = getSumOfSquares(p1);
51+
p1 = sumOfDigitSquares(p1);
5052

5153
// p2: 2 steps
52-
p2 = getSumOfSquares(p2);
54+
p2 = sumOfDigitSquares(p2);
5355
if (p1 == p2) {
5456
return p1 == 1;
5557
}
56-
p2 = getSumOfSquares(p2);
58+
p2 = sumOfDigitSquares(p2);
5759
if (p1 == p2) {
5860
return p1 == 1;
5961
}
6062
} while (true);
6163
}
6264

63-
private static int getSumOfSquares(int n) {
65+
private static int sumOfDigitSquares(int n) {
6466
var result = 0;
6567
while (n > 0) {
6668
var remainder = n % 10;

0 commit comments

Comments
 (0)