如果不小心网友来到了这里请网友自动飘走,浪费你们时间表示歉意。该系列博客的目的是:想作为自律工具和朋友一起每天刷几道题作为打卡督促的功能,没有什么可参考学习的东西,也不是刷博客量充大佬的目的
题号:461
//移位运算
var hammingDistance = function (x, y) {
let z = x ^ y
let result = 0
while (z != 0) {
let tmp = z
if (tmp >> 1 << 1 != z) {
result++
}
z = z >> 1
}
return result
};
题号:448
//利用map
var findDisappearedNumbers = function (nums) {
let map = new Map()
nums.forEach(ele => {
map.set(ele, 1)
});
let result = []
for (let i = 1; i <= nums.length; i++) {
if (!map.has(i)) {
result.push(i)
}
}
return result
};
//利用原数组作为数据载体
//利用原数组作为我们承装信息的载体的前提是:找到一种逻辑使得我们
//在使用原数组的数据的时候还能还原回来原来的数据信息
var findDisappearedNumbers = function (nums) {
let result = []
nums.forEach((item, idx, arr) => {
if (arr[Math.abs(item) - 1] > 0) {
arr[Math.abs(item) - 1] = arr[Math.abs(item) - 1] * (-1)
}
});
nums.forEach((item, idx) => {
if (item > 0) {
result.push(idx + 1)
}
});
return result
};
题号:543
//路径走过的节点数
var diameterOfBinaryTree = function (root) {
//为什么要这样?
//不得已而为之,js在最外面设置一个全局变量会导致leetcode一直提交不过
//其它题也有类似情况,想到这个引用传递下去保存结果的方法
let result = { result: 1 }
helper(root, result)
//节点数量-1为路径
return result.result - 1
};
function helper(node, result) {
if (node == null) {
return 0
}
let left = helper(node.left, result)
let right = helper(node.right, result)
//每一个节点的左右子树加上自己都有可能最大
//这里做判断,在遍历的过程中就做了判断
result.result = Math.max(left + right + 1, result.result)
return Math.max(left, right) + 1
}