/LeetCode-JavaScript

立扣(LeetCode)JavaScript语言学习练习

Primary LanguageJavaScript

LeetCode-JavaScript

立扣(LeetCode)JavaScript语言学习练习

联系日志

2022.03.25

1 两数之和 从左边开始,双指针去判断哪两个数相加等于目标值即可

2.两数相加 两个数组里面的数分别相加再放入长度最长的数组里面,再循环遍历数组判断是否大于10,大于的话进位即可

36 有效的数独 这玩意我一开始是用笨方法一个一个去判断的,后来发现别人写的更简单。。

2022.03.24

136 只出现一次的数字 两个方法,一个利用索引判断,一个是异或判断,相同为0不同留下

350 两个数组的交集 II 先对数组进行从小到大排列,再用双指针找出共同的数组并放入新数组

66 加一 很简单,其实就是判断每个数组里面的数字是否大于10,大于10就得进位而已。

283 移动零 这玩意有点顶,我先是用了数组里面的删除和push方法实现,最后发现这玩意耗时太长了!最后摸索出了两个方法,一是:固定好上一个非0数的位置,默认是-1,循环遍历,遇到非0数就让上一个非0数的后一位和当前位交换即可。第二个比较麻烦。利用的是冒泡的方法。检测当前位置是否是0,不是的话检测下一个,是的话再次循环找当前位后面第一个非0数并进行交换

2022.03.23

26 删除有序数组中的重复项 这题目要求需要在原数组中修改,所以不能用到新定义数组去过滤,又因为这个数组是有序的数组,所以我们可以直接通过splice方法去编辑数组即可解

217 存在重复元素 Array.from()和new Set()配合可以直接判断前后两个数组的长度一不一样就知道了,另外,new Set()可以构造一个不重复的数组

122 买卖股票的最佳时机 II 利用计算出每天次日的收益只在有收益的时候买入得出最大收益,另外有个 动态规划 算法可以复习一下

旋转数组:没有做出来,题目要求不能修改原数组

2022.03.22

  1. 二叉树的最大深度

解题思路为:通过函数自调用从最外面开始一个一个找每个分支的尾部,并返回最大的深度。

踩坑:一开始以为二叉树是一个数组,就采用了通过计算数组长度是在2的多少次方之间这样去计算二叉树的深度,经测试发现二叉树是一个对象,但是不知道为什么我用console.log直接打印root出来的数据是一个Array,为了定位这个问题我先后用了typeof和Json.stringify去打印root才发现这玩意是一个数组,具体原因经查阅发现这个是一个treenode,即一个数节点,如果再采用一开始的想法便会多了一部转换成list即Array的过程,速度上慢了,不过以后要是遇到这个需求的话可以想起来怎么进行转换了。另外这个解题方法通过函数自调用去不断的自检的思路应该是最好的解题方法了,下次一定会!!