
获得徽章 0
- 【leetcode 第70题】爬楼梯:
leetcode-cn.com
实现思路:
一、动态规划,如图1
执行结果:
√ Accepted
√ 45/45 cases passed (76 ms)
√ Your runtime beats 64.97 % of javascript submissions
√ Your memory usage beats 16.04 % of javascript submissions (33.9 MB)
二、斐波那契数列,如图2
执行结果:
√ Accepted
√ 45/45 cases passed (68 ms)
√ Your runtime beats 91.92 % of javascript submissions
√ Your memory usage beats 39.87 % of javascript submissions (33.7 MB)
如有错误或者建议,请指出,谢谢展开等人赞过48 - 【leetcode 第9题】x 的平方根:
leetcode-cn.com
我的实现思路:
一、牛顿迭代法
牛顿迭代法是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。如图1
记录执行结果:
√ Accepted
√ 1017/1017 cases passed (100 ms)
√ Your runtime beats 80.59 % of javascript submissions
√ Your memory usage beats 17.11 % of javascript submissions (35.9 MB)
二、二分查找法
所求的结果一定小于x/2,如图2
记录执行结果:
√ Accepted
√ 1017/1017 cases passed (104 ms)
√ Your runtime beats 69.39 % of javascript submissions
√ Your memory usage beats 8.31 % of javascript submissions (36.2 MB)
如有错误或者建议,请指出,谢谢展开赞过评论1 - 【leetcode 第9题】x 的平方根:
leetcode-cn.com
我的实现思路:
一、牛顿迭代法
牛顿迭代法是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。如图1
记录执行结果:
√ Accepted
√ 1017/1017 cases passed (100 ms)
√ Your runtime beats 80.59 % of javascript submissions
√ Your memory usage beats 17.11 % of javascript submissions (35.9 MB)
二、二分查找法
所求的结果一定小于x/2,如图2
记录执行结果:
√ Accepted
√ 1017/1017 cases passed (104 ms)
√ Your runtime beats 69.39 % of javascript submissions
√ Your memory usage beats 8.31 % of javascript submissions (36.2 MB)
如有错误或者建议,请指出,谢谢展开评论点赞 - 【leetcode 第66题】加一:
leetcode-cn.com
我的实现思路:末尾为9时,需要进位且数组长度需要+1,如果末尾不为9,则不需要进位,直接返回加一后的数组即可。如图,对数组进行倒序循环,首先是对末尾加一,对末尾加一后的值取余,如果余数不等于 0 ,说明末尾不为 9,不需要进位和数组长度加一,直接返回数组即可。如果余数为 0,继续循环和取余,直到遇到余数不为 0 时的值才会返回数组。当循环完后,还需要继续执行后面的代码时,说明这是一个特殊数组,如[9,9]、[9,9,9],因为这样的数组每个值加一后,余数都为 0,那么此时,需要进位,让末尾值置零,且数组长度加一,然后数组的第 0 个值为1。
记录执行结果:
√ Accepted
√ 109/109 cases passed (80 ms)
√ Your runtime beats 62.44 % of javascript submissions
√ Your memory usage beats 41.65 % of javascript submissions (33.7 MB)
如有错误或者建议,请指出,谢谢展开赞过评论2 - 【leetcode 第58题】最后一个单词的长度:
leetcode-cn.com
我的实现思路:首先去除字符串左右两边的空格,声明 start、end变量,start 默认值为 end, 从最后一个开始循环,当 start 大于等于0也就是循环到第一个字符时或者当遇到空格时,停止循环,此时 end - start 的值就是最后一个单词的长度。
记录执行结果:
√ Accepted
√ 59/59 cases passed (76 ms)
√ Your runtime beats 71.86 % of javascript submissions
√ Your memory usage beats 70.49 % of javascript submissions (33.6 MB)
如有错误或者建议,请指出,谢谢!展开赞过评论1 - 【leetcode 第53题】最大子序和:
leetcode-cn.com
我的实现思路:采用动态规划法,如图,sum + num[i] > nums[i], 说明 sum 对让以前的值增加,那么 sum 保留并加上当前索引的值,则 sum+=nums[i],反正 sum = nums[i] ,表示sum等于当前值,每一个循环后通过 Math.max 在上次求的最大和和这次的和中取最大值,最终返回最大值。
记录执行结果:
√ Accepted
√ 202/202 cases passed (76 ms)
√ Your runtime beats 93.34 % of javascript submissions
√ Your memory usage beats 34.53 % of javascript submissions (35.2 MB)
如有错误或者建议,请指出,谢谢!展开赞过21 - 【leetcode 第35题】搜索插入位置:
leetcode-cn.com
我的实现思路:由于传入的数组是有序的,第一步判断数组最后一位是否小于目标值,如果小于,目标值可以插入数组尾部,直接范围数组长度。如果目标值小于数组最后一位,通过二分查找,声明 left , right , mid 三个变量,如果左边的数小于 mid,说明目标值应该插入 mid 的右边,此时 left = mid+1, 反正,right = mid。
这里特此说明一下,为什么 left = mid+1, right = mid?
1、因为当侯选区只有两个元素时,一旦进入中位数是左边界的逻辑,如果左边界不收缩,下次循环还会选左中位数,会造成死循环。解决方案:换成右中位数。
2、当侯选区只有两个元素时,一旦进入中位数是右边界的逻辑,如果右边界不收缩,下次选好还会选右中位数,如此下去会造成死循环。解决方案: 换成左中位数。展开赞过评论1 - 【leetcode 第27题】移除元素:
leetcode-cn.com
我的实现思路:通过快慢指针,i 是慢指针,初始值为0,j 是快指针,如果快指针的值等于 val ,则跳过;如果不等于 val , 那么慢指针所对应的数组索引 nums[i] 正好等于快指针 nums[j],慢指针+1,这样可以不使用额外的空间,在原来的数组基础上移除元素,从图片中我们可以看出,输出了移除元素后的个数 i,那么数组的前 i 个的值就不会包括 val
记录执行结果:
√ Accepted
√ 113/113 cases passed (72 ms)
√ Your runtime beats 91.6 % of javascript submissions
√ Your memory usage beats 17.92 % of javascript submissions (33.9 MB)展开赞过23 - 【leetcode 第14题】最长公共前缀:
leetcode-cn.com
我的实现思路是:声明一个prefix变量放数组中的第一个字符,数组从1开始循环,如果第i个字符不包含prefix,继续寻找,直到找到字符为空时,停止循环,prefix从字符的长度开始依次递减截取,当找到最长公共前缀时,保证是最长的公共前缀。
记录运行结果:
√ Accepted
√ 118/118 cases passed (64 ms)
√ Your runtime beats 99.75 % of javascript submissions
√ Your memory usage beats 84.54 % of javascript submissions (33.7 MB)展开赞过评论1 - 【leetcode13题】罗马数字转整数:
leetcode-cn.com
我的思路:我是把罗马数字存在对象key里面,相对应的整数放到value厘米,通过循环字符串,对象的key:value,判断字符的右边是否比左边的字符大,如果是右边大于左边,则累加,反之,则相减。展开赞过33