选择最大数排序,选到下标为k-1的元素时,就可以返回了
1 | var findKthLargest = function(nums, k) { |
滑动窗口,维护俩个下标值start,end,通过Math.min记录窗口的最小长度
1 | var minSubArrayLen = function(target, nums) { |
最直接调用api的方法(不推荐)
1 | var merge = function(nums1, m, nums2, n) { |
先收集所有从根到叶子节点的路径,然后判断路径有没有相加为targetSum的
1 | var hasPathSum = function(root, targetSum) { |
递归,到最后的叶子节点,判断当前的数字是不是0
1 | var hasPathSum = function(root, targetSum) { |
简单的加法运算
1 | var addStrings = function(num1, num2) { |
自个的想法,挨个数比较
1 | var compareVersion = function(version1, version2) { |
递归,用一个暂时的中间变量
1 | var invertTree = function(root) { |
哈希表,用空间换时间
1 | var twoSum = function(nums, target) { |
递归,得到每一条路径,然后最后判断这条路径的数相加是不是目标数
1 | var pathSum = function(root, targetSum) { |
141 判断环形链表 https://leetcode-cn.com/problems/linked-list-cycle
- 使用一个set数据记录每一步的数据
1 | var hasCycle = function(head) { |
- 快慢指针,快指针走俩步,慢指针走一步,相等了就是环形
1 | var hasCycle = function(head) { |
53 最大子序和 https://leetcode-cn.com/problems/maximum-subarray/submissions/
动态规划
1 | var maxSubArray = function(nums) { |
维护一个最大值
1 | var maxProfit = function(prices) { |
中序遍历: 按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。
1 | var inorderTraversal = function(root) { |
先对数组进行从小到大的排序,再对排序数组进行循环,如果当前数大与0,已经不可能有三数相加为0了,跳出循环,维护左右俩个指针,相加三个数,和为0的时候,加入结果,并且为了避免没有重复数据,要对俩个指针进行while循环,去除重复数据,小于0 的时候,左边++,大于0 的时候右边减减。
1 | var threeSum = function(nums) { |