原题链接:2413. 最小偶倍数
给你一个正整数 n
,返回 2
和 n
的最小公倍数(正整数)。
示例 1:
输入:n = 5 输出:10 解释:5 和 2 的最小公倍数是 10 。
示例 2:
输入:n = 6 输出:6 解释:6 和 2 的最小公倍数是 6 。注意数字会是它自身的倍数。
这个思路很简单,一个数和2的最小偶倍数,先看这个数能不能整除2,能整除最小偶倍数就是这个数,即这个数是偶数,不能整除,即这个数是奇数,就是这个数乘以2。
代码也很简单
class Solution {
public:
int smallestEvenMultiple(int n) {
'''
三目运算符,由问号?分割,问号前是条件,满足条件就返回冒号前的,不满足就返回冒号后的
'''
return n % 2 == 0 ? n : 2 * n;
}
};
虽然简单题,但也能整花活:
int smallestEvenMultiple(int n){
'''
使用位运算,先按位与,n&1这个目的是找出这个数是不是偶数,因为按位与只有都为1时才为1,其他都为0。
比如奇数3&1,即00000011 & 00000001 = 00000010 = 1
然后进行左移,左移1位是乘2,就得6.
偶数4&1,即000000100 & 00000001 = 00000000 = 0
左移0位,还是4自己
这样就完成了运算
'''
return n<<(n&1);
}