Skip to content

Latest commit

 

History

History
38 lines (31 loc) · 872 Bytes

231.2-的幂.md

File metadata and controls

38 lines (31 loc) · 872 Bytes

231.2-的幂

/*
 * @lc app=leetcode.cn id=231 lang=typescript
 *
 * [231] 2 的幂
 */

// @lc code=start
function isPowerOfTwo(n: number): boolean {}
// @lc code=end

解法 1: 位运算

2 的幂次方必定大于 0,然后检查数字的二进制只有一个 1,其余全是 0,利用 n&(n-1) 可以消除二进制最后一个 1,那如果消除之后数字为 0,则说明这个数字是 2 的幂次方.

function isPowerOfTwo(n: number): boolean {
  return n > 0 && !(n & (n - 1))
}

Case

test.each([
  { input: { n: 1 }, output: true },
  { input: { n: 16 }, output: true },
  { input: { n: 3 }, output: false },
  { input: { n: 4 }, output: true },
  { input: { n: 5 }, output: false },
  { input: { n: 0 }, output: false },
])('input: n = $input.n', ({ input: { n }, output }) => {
  expect(isPowerOfTwo(n)).toEqual(output)
})