Skip to content

Commit d9f7c8c

Browse files
solves #3226: Number of Bit Changes to Make Two Integers Equal in java
1 parent a6a3df8 commit d9f7c8c

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -928,4 +928,4 @@
928928
| 3210 | [Find the Encrypted String](https://leetcode.com/problems/find-the-encrypted-string) | [![Java](assets/java.png)](src/FindTheEncryptedString.java) | |
929929
| 3216 | [Lexicographically Smallest String After a Swap](https://leetcode.com/problems/lexicographically-smallest-string-after-a-swap) | [![Java](assets/java.png)](src/LexicographicallySmallestStringAfterASwap.java) | |
930930
| 3222 | [Find the Winning Player in Coin Game](https://leetcode.com/problems/find-the-winning-player-in-coin-game) | [![Java](assets/java.png)](src/FindTheWinningPlayerInCoinGame.java) | |
931-
| 3226 | [Number of Bit Changes to Make Two Integers Equal](https://leetcode.com/problems/number-of-bit-changes-to-make-two-integers-equal) | | |
931+
| 3226 | [Number of Bit Changes to Make Two Integers Equal](https://leetcode.com/problems/number-of-bit-changes-to-make-two-integers-equal) | [![Java](assets/java.png)](src/NumberOfBitChangesToMakeTwoIntegersEqual.java) | |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// https://leetcode.com/problems/number-of-bit-changes-to-make-two-integers-equal
2+
// T: O(max(log(N), log(K)))
3+
// S: O(1)
4+
5+
public class NumberOfBitChangesToMakeTwoIntegersEqual {
6+
public int minChanges(int n, int k) {
7+
if (n == k) {
8+
return 0;
9+
}
10+
11+
int changes = 0;
12+
while (n > 0 || k > 0) {
13+
final int nLastBit = n & 1;
14+
final int kLastBit = k & 1;
15+
if (kLastBit == 1 && nLastBit == 0) {
16+
return -1;
17+
} else if (kLastBit == 0 && nLastBit == 1) {
18+
changes++;
19+
}
20+
n >>= 1;
21+
k >>= 1;
22+
}
23+
return changes;
24+
}
25+
}

0 commit comments

Comments
 (0)