letcode刷题专栏
文章平均质量分 59
祯民
这个作者很懒,什么都没留下…
展开
-
摩尔投票法
提问: 给定一个int型数组,找出该数组中出现次数大于数组长度一半的int值。解决方案: 遍历该数组,统计每个int值出现次数,再遍历该数组,找出出现次数大于数组长度一半的int值。同样的,该解决办法也要求使用Map,否则无法达到线性的时间复杂度。那么对于这个问题,有没有什么不使用Map的线性算法呢?答案就是今天我们要提到的摩尔投票法。利用该算法来解决这个问题,我们可以达到线性的时间复杂度以及常量级的空间复杂度。首先我们注意到这样一个现象: 在任何数组中,出现次数大于该数组长度一半的值只能有一个。转载 2021-05-13 16:38:51 · 99 阅读 · 0 评论 -
将有序数组转换为平衡二叉搜索树(递归解法)
解题思路形成一颗平衡二叉搜索树的关键在于保证左右两子树高度差不大于1,也就是根节点为对应树的中位数,这里提供一个取两值中间整数的写法(a+b) >>> 1,将和向右无符号移动1位即为两者中位整数,当然也可以用Math.floor((a+b)/2)的写法,也是可以的代码/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left原创 2020-12-30 20:39:06 · 197 阅读 · 0 评论 -
搜索插入位置(二分法解题)
这道题与二分法不同的是对没有相同对象情况的处理,当没有相同的对象的时候,需要找到离target对象最近的两个对象存在它们中间/** * @param {number[]} nums * @param {number} target * @return {number} */var searchInsert = function(nums, target) { var low = 0, high = nums.length - 1; while(low <= high){.原创 2020-11-26 09:26:32 · 185 阅读 · 0 评论 -
有效的字母异位数
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-a原创 2020-11-22 17:02:36 · 118 阅读 · 0 评论