![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
一笑而泯
这个作者很懒,什么都没留下…
展开
-
leetcode刷题记录(13)
1.删除链表中的节点 *简单题目:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。题目没有描述清楚。函数入参是链表中你要删除的节点。这题很简单,把next的val值和next属性都覆盖当前的节点就行了/** * @param {ListNode} node * @return {void} Do not return anything, modify node in-place instead. */var deleteNode = fu.原创 2020-07-05 17:31:44 · 100 阅读 · 0 评论 -
leetcode刷题记录(12)
1.2的幂 *简单题目:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。思路:这题算简单的,递归、迭代、位运算都行迭代:/** * @param {number} n * @return {boolean} */var isPowerOfTwo = function (n) { if (n <= 0) return false; if (n == 1) return true; while (n >= 2) { n = n / 2; .原创 2020-07-04 16:31:40 · 171 阅读 · 0 评论 -
leetcode刷题记录(11)
1.存在重复元素 *简单题目:给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回true。如果数组中每个元素都不相同,则返回false。思路:首先是用map来记录/** * @param {number[]} nums * @return {boolean} */var containsDuplicate = function(nums) { let map={}for(let i=0,l=nums.length;i...原创 2020-07-01 00:06:48 · 194 阅读 · 0 评论 -
leetcode刷题记录(10)
1.快乐数题目:编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。思路:重点就是无限循环,这个就和环形链表很像了。环形链表的终止条件是节点为null,或者循环,这个的终止条件是1,或者循环。所以也是两种解法:双指针法和map法,m..原创 2020-06-27 22:19:25 · 109 阅读 · 0 评论 -
leetcode刷题记录(9)
1.阶乘后的0题目:给定一个整数n,返回n! 结果尾数中零的数量。思路:自习观察可知,多少个0取决于数字的因数有多少个5(包括5自身),因为5×2就有一个0,偶数肯定有2,偶数的数量比5更多,所以因数中5的数量就是阶乘的结果中0的数量/** * @param {number} n * @return {number} */const trailingZeroes = function (n) { let res = arguments[1] ? arguments[1] : ..原创 2020-06-26 21:38:56 · 113 阅读 · 0 评论 -
leetcode刷题记录(8)
1.环形链表题目:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。思路:先说最简单的,用map记录每个节点,然后依次比较即可/** * @param {ListNode} head * @return {boolean} */var hasCycle = function (head) { var map = new Map(); while...原创 2020-06-24 22:50:40 · 102 阅读 · 0 评论 -
leetcode刷题记录(7)
1.路径总和题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。思路:递归遍历所有节点,然后判断是否有和目标值相同的成员。var hasPS = (node, sum, currtS = 0) => { if (!node) return false; currtS += node.val; if (!node.left && !node.right) {.原创 2020-06-20 17:24:58 · 145 阅读 · 0 评论 -
leetcode刷题记录(6)
1.二叉树的最大深度题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。思路:要得到深度,就要遍历树,高度是一层一层累加的,所以采用递归的办法,逐级的获取高度,如果存在左节点或者右节点则自增1,然后计算下一个节点的深度。var maxDepth = function(root) { if (!root) return 0; const a = (root, length) => { .原创 2020-06-17 00:21:01 · 96 阅读 · 0 评论 -
leetcode刷题记录(4)
1.最大子序和题目:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。思路:动态规划。用一个变量记录累计的结果,另一个变量记录当前计算的结果。如果累计结果小于当前计算的结果,就把当前计算的结果覆盖,进入下一轮循环var maxSubArray = function(nums) { let l = nums.length, sum = nums[0], res = nums[0]; if (!l) return 0; ..原创 2020-06-14 23:45:41 · 158 阅读 · 0 评论 -
leetcode刷题记录(2)
1.最长公共前缀题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。思路:以第一个字符串为基准,如果,从第一个字符开始依次和其他成员比较,如果通过则拼接,不通过直接返回当前的结果var longestCommonPrefix = function(strs) { const s1 = strs[0]; if (!s1) return ""; const l1 = s1.length, l2 = strs.length; i.原创 2020-06-08 22:45:26 · 141 阅读 · 0 评论 -
leetcode刷题记录(3)
1.移除元素题目:给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。和昨天的重复排序类似。思路:单次遍历,并声明一个变量记录当前有效的长度,比较时,如果相等则直接进入下一轮循环,如果不相等,先把当前元素赋值给当前变量下标,然后变量自增1,(顺序不能弄错)var removeE...原创 2020-06-10 22:41:56 · 129 阅读 · 0 评论 -
leetcode刷题记录(1)
1.两数之和题目:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。初版思路:记录每一个数的值和下标,然后找到对应的差的下标,如果存在且两个下标不同则返回 for(let i=nums.length-1;i;i--){ const val1=nums[i] const indexList=nums.m...原创 2020-06-06 18:42:54 · 170 阅读 · 0 评论