leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

commit 45170406deedd920af6ebe88b0e309f255d52c37
parent 1af9cba05269900677e23e3bbfedd3b7075e6d30
Author: Jack Sangdahl <jack@pngu.org>
Date:   Fri,  7 Nov 2025 21:29:03 -0700

1611. minimum one bit operations to make integers zero

Diffstat:
Mmin_one_bit_op_zero.c | 22+++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/min_one_bit_op_zero.c b/min_one_bit_op_zero.c @@ -10,20 +10,20 @@ */ int minimumOneBitOperations(int n) { - int tmp = n, sign = 1, cnt = 0, pos = 0; - while (tmp) { - if (tmp & (1 << pos)) { - cnt += sign * ((1 << (pos + 1)) - 1); - tmp &= ~(1 << pos); - sign *= -1; + if (!n) + return 0; + int acc = 0, sign = 1; + int highest = 31 - __builtin_clz(n); + for (int i = highest; i >= 0; --i) { + if ((n >> i) & 1) { + acc += sign * ((1 << (i + 1)) - 1); + sign = -sign; } - pos--; } - return cnt; + return acc; } int main() { - printf("%d\n", minimumOneBitOperations(3)); // expect: 2 - printf("%d\n", minimumOneBitOperations(6)); // expect: 4 - printf("%d\n", minimumOneBitOperations(8174)); // expect: N/A + printf("%d\n", minimumOneBitOperations(3)); // expect: 2 + printf("%d\n", minimumOneBitOperations(6)); // expect: 4 }