1 Joish丶

尚未进行身份认证

暂无相关简介

等级
TA的排名 20w+

43.二叉树的最近公共祖先

题目描述:代码实现:递归法,对左右子树分别递归,找到p,q后返回,若left,right同时找到pq,就返回根节点,如果只有left和right其中一个找到,就返回他们本身。/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.le...

2020-04-28 10:19:21

42.格林编码

题目描述:代码实现:应用格林编码的公式,使用位运算的方式,将i右移一位并与原来的i做异或运算即得到结果。时间复杂度:O(2^n)/** * @param {number} n * @return {number[]} */var grayCode = function(n) { var res = [] for (var i = 0; i < Math....

2020-04-14 10:44:40

41.子集

题目描述:代码实现:迭代法,首先初始化res为一个二维数组,包括一个[],在迭代的过程中,依次找含有nums[0],nums[1]…的子集,与前面的子集拼接,得到新的子集。时间复杂度:O(N×2^N)值得注意的是,这里必须声明一个变量len来存储res的长度,因为在第二层循环的过程中res的长度会发生变化/** * @param {number[]} nums * @retur...

2020-04-14 10:16:15

40.只出现一次的数字

题目描述:代码实现:位运算,一个数和 0 做 XOR 运算等于本身:a⊕0 = a,一个数和其本身做 XOR 运算等于 0:a⊕a = 0,XOR 运算满足交换律和结合律:a⊕b⊕a = (a⊕a)⊕b = 0⊕b = b/** * @param {number[]} nums * @return {number} */var singleNumber = function(...

2020-04-07 08:24:43

39.反转字符串

题目描述:代码实现:方法一:函数法/** * @param {character[]} s * @return {void} Do not return anything, modify s in-place instead. */var reverseString = function(s) { return s.reverse()};方法二:es6解构...

2020-03-31 10:13:04

38.通配符匹配

题目描述:代码实现:回溯法,本题主要的难点在于如何解决’‘的问题,由于’‘可以匹配任意长度的字符串,那么我们就可以通过记录‘’的位置通过回溯的方法来解决这个问题,先让 ‘’匹配 0 个字符,如果匹配 0 个字符不成功,则根据之前记录的 sStarIdx 和 pStarIdx 回溯到这个地方,再让‘*’匹配 1 个字符,如果匹配 1 个字符也不成功,则继续回溯回来,匹配 2 个字符,以此类推...

2020-03-30 21:10:56

37.加油站

题目描述:代码实现:贪心算法,设置一个sum来计算gas是否大于等于cost,再设置一个curSum来判断从哪里为起始点,并设置为startIndex,最终得出结果。时间复杂度:O(n)/** * @param {number[]} gas * @param {number[]} cost * @return {number} */var canCompleteCircui...

2020-03-29 11:15:26

36.跳跃游戏

题目描述:代码实现:贪心算法,我的思路好像跟那些题解的思路不太一样。首先做这道题,我先考虑的是什么情况可以出现false,就是除了数组的最后一位,有一位出现0且这个时候的max=i(因为max不可能小于i),除了这种情况,其他都是true.时间复杂度:O(n)/** * @param {number[]} nums * @return {boolean} */var canJ...

2020-03-28 13:14:58

35.分发饼干

题目描述:代码实现:贪心算法,先排序,之后删掉s的第一个元素,并比较它和g的第一个元素的大小,如果比它大于等于,则删除掉g的第一个元素。时间复杂度:O(nlogn)/** * @param {number[]} g * @param {number[]} s * @return {number} */var findContentChildren = function(g,...

2020-03-27 14:34:47

34.滑动窗口最大值

题目描述:代码实现:暴力法,每次滑动窗口计算最大值。/** * @param {number[]} nums * @param {number} k * @return {number[]} */var maxSlidingWindow = function(nums, k) { var arr = nums.slice(0, k) var res = []...

2020-03-26 15:36:00

33.判断子序列

题目描述:代码实现:双指针法,快指针在t中遍历,给s一个慢指针flag,如果s[flag] === t[i],慢指针就向后移,并判断flag是否等于s的长度,如果最后等于长度,则为true,否则,为false。时间复杂度:O(n)/** * @param {string} s * @param {string} t * @return {boolean} */var isS...

2020-03-26 09:03:41

32.设计循环双端队列

题目描述:代码实现:利用数组实现/** * Initialize your data structure here. Set the size of the deque to be k. * @param {number} k */var MyCircularDeque = function(k) { this.arr = [] this.size = k};...

2020-03-25 20:36:52

31.恢复二叉搜索树

题目描述:代码实现:还不是很懂时间复杂度:O(n)/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} roo...

2020-03-24 18:00:42

30.整数反转

题目描述:代码实现:思路很简单,关键在于对于边界值的处理时间复杂度:O(log(x))/** * @param {number} x * @return {number} */var reverse = function(x) { var rev = 0 while (x !== 0) { var pop = x % 10 x...

2020-03-24 10:19:18

29.不同的二叉搜索树 II

题目描述:给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。示例:输入: 3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2...

2020-03-23 22:40:30

28.二叉树的中序遍历

题目描述:给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]代码实现:递归法,中序遍历是左节点,根节点,右节点的顺序遍历,按照这个思路即可。前序中序后序遍历指的是根节点遍历的位置。时间复杂度:O(n)/** * Definition for a binary tree ...

2020-03-22 18:21:18

27.二叉树的最大深度

题目描述:代码实现:递归法,分别检索左右节点,逐步递归即可。时间复杂度:O(n)/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param...

2020-03-21 20:22:47

26.逆波兰表达式求值

题目描述:代码实现:关键在于理解题意,运用栈存储数字,遍历到运算符,则取栈顶两个元素运算即可。时间复杂度:O(n)/** * @param {string[]} tokens * @return {number} */var evalRPN = function(tokens) { var calculate = (s1, s2, char) => { ...

2020-03-20 20:47:34

25.对称二叉树

题目描述:代码实现:递归法,遍历树,判断左右节点是否相等即可。时间复杂度:O(n)/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @para...

2020-03-20 19:31:45

24.相同的树

题目描述:代码实现:递归法,三个判断语句后递归到左右节点即可。时间复杂度:O(n)/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @para...

2020-03-19 20:28:40

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。