LeetCode 算法题
104. 二叉树的最大深度
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {number} */ var maxDepth = function (root) { if (root == null) { return 0; } else { return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; } };
1025. 除数博弈
爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。
最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:
选出任一 x,满足 0 < x < N 且 N % x == 0 。
用 N - x 替换黑板上的数字 N 。
如果玩家无法执行这些操作,就会输掉游戏。
只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。
A:奇数的约数肯定是奇数。 B:1是所有数的约数,2是所有偶数的约数。
/** * @param {number} N * @return {boolean} */ // N为偶数先手赢,N为奇数后手赢 var divisorGame = function (N) {
// 偶数的二进制最后一位为0,奇数的最后一位为1,直接拿N与1进行与运算 return !(N & 1); };
1290. 二进制链表转整数
给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。
请你返回该链表所表示数字的 十进制值 。
/** * @param {ListNode} head * @return {number} */ var getDecimalValue = function (head) { let current = head; let str = '' while (current) { str += current.val; current = current.next; } return parseInt(str, 2) };
1295. 统计位数为偶数的数字
给你一个整数数组 nums
,请你返回其中位数为 偶数 的数字的个数。
/** * @param {number[]} nums * @return {number} */ var findNumbers = function (nums) { var r = nums.filter((num, i) => { var temp = num.toString().length; return temp % 2 == 0; }) return r.length; };
1365. 有多少小于当前数字的数字
给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。
换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。
以数组形式返回答案。
/** * @param {number[]} nums * @return {number[]} */ // 循环数组,将每个num与nums中的数字进行比较 // 将符合要求的数据计数(暴力解法) var smallerNumbersThanCurrent = function (nums) { var temp = []; nums.map((num, i) => { let count = 0 nums.map((n, j) => { if (i != j && num > n) { count++ } }); temp.push(count) }) return temp; };