返回
以不同视角探索LeetCode:二进制与数学难题之旅(JS)
前端
2023-10-29 01:04:07
揭开LeetCode二进制与数学难题的面纱
踏上LeetCode的二进制与数学难题之旅,让我们用JavaScript探索算法之美。从位运算到数字转换,从进制转换到进制问题,解锁编程技能的新高度。
二进制,计算机世界的基础语言,在LeetCode中也扮演着举足轻重的角色。位运算、位移、异或等操作,是二进制难题的常见解题思路。学习这些技巧,你会发现LeetCode中的许多难题迎刃而解。
数学问题也是LeetCode的常客。从简单的加减乘除到复杂的数论算法,数学知识在LeetCode中有着广泛的应用。掌握数学技巧,你会发现LeetCode中的许多难题变得更加清晰。
经典难题与JavaScript解法
在LeetCode中,二进制与数学难题数不胜数。以下是一些经典难题与JavaScript解法,供您参考学习:
- 191. 位1的个数 :给定一个整数,计算其二进制表示中1的个数。
/*
* @param {number} n - 输入的整数
* @return {number} - 1的个数
*/
const hammingWeight = (n) => {
let count = 0;
while (n) {
count++;
n &= n - 1;
}
return count;
};
- 326. 3的幂 :给定一个整数,判断其是否是3的幂。
/*
* @param {number} n - 输入的整数
* @return {boolean} - 是否是3的幂
*/
const isPowerOfThree = (n) => {
if (n <= 0) {
return false;
}
while (n % 3 === 0) {
n /= 3;
}
return n === 1;
};
- 136. 只出现一次的数字 :给定一个数组,其中所有元素都出现了两次,只有一个元素只出现了一次。找到这个只出现了一次的元素。
/*
* @param {number[]} nums - 输入的数组
* @return {number} - 只出现了一次的元素
*/
const singleNumber = (nums) => {
let result = 0;
for (const num of nums) {
result ^= num;
}
return result;
};
- 172. 阶乘后的零 :给定一个非负整数n,求n!末尾有多少个0。
/*
* @param {number} n - 输入的非负整数
* @return {number} - n!末尾有多少个0
*/
const trailingZeroes = (n) => {
let count = 0;
while (n >= 5) {
n /= 5;
count += Math.floor(n);
}
return count;
};
- 7. 整数反转 :给定一个32位有符号整数,将其反转并返回。
/*
* @param {number} x - 输入的32位有符号整数
* @return {number} - 反转后的整数
*/
const reverse = (x) => {
let result = 0;
const isNegative = x < 0;
x = Math.abs(x);
while (x > 0) {
result = result * 10 + x % 10;
x = Math.floor(x / 10);
}
return isNegative ? -result : result;
};
- 171. Excel表列序号 :给定一个Excel表中的列号,返回其对应的数字。
/*
* @param {string} columnTitle - 输入的Excel表列号
* @return {number} - 对应的数字
*/
const titleToNumber = (columnTitle) => {
let result = 0;
for (const char of columnTitle) {
result = result * 26 + char.charCodeAt(0) - 'A'.charCodeAt(0) + 1;
}
return result;
};
- 190. 颠倒二进制位 :给定一个32位无符号整数,颠倒其二进制位并返回。
/*
* @param {number} n - 输入的32位无符号整数
* @return {number} - 颠倒二进制位后的整数
*/
const reverseBits = (n) => {
let result = 0;
for (let i = 0; i < 32; i++) {
result <<= 1;
result |= n & 1;
n >>= 1;
}
return result;
};
结语
LeetCode的二进制与数学难题,是算法学习之旅中的宝贵财富。这些难题不仅考验着你的编程技能,也锻炼着你的数学思维。通过不断地练习和学习,你终将成为一名算法高手。