随笔分类 - Leecode
摘要:方法一:动态规划 时间复杂度: O(N×M)。 空间复杂度: O(N×M)。 N 表示数组 A 的长度,M 表示数组 B 的长度。 空间复杂度还可以再优化,利用滚动数组可以优化到 O(min(N,M))。 代码实现: 数组A=[1,2,3,2,1] 数组B=[3,2,1,4,7] public in
阅读全文
摘要:此题首先可以确定选用的算法是递归 对于二叉搜索树我们可以知道其左叶子节点值<根节点值<右叶子节点值,故二叉搜索树的中序遍历为一个升序数组。即题目给的有序数组。 中序遍历:先遍历左子树,在遍历根节点,最后遍历右子树。 如果不要求为平衡二叉搜索树的话,仅由一个升序数组,树的根节点就有多种不同的取值,就会
阅读全文
摘要:题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 方法一:广度优先搜索 思路: 首先我们可以想到使用广度优先搜索的方式,记录从根节点到当前节点的路径和,以防止重复计算。 这样我们使用两个队列,分别
阅读全文
摘要:题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 网格中的障碍物和空位置分别用 1 和
阅读全文
摘要:题目:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。 方法1 不利用其他存储空间 在此方法中,我们利用两个计数器 left 和 right 。首先,我们从左到右遍历字符串,对于遇到的每个 ‘(’,我们增加 left 计数器,对于遇到的每个 ‘)’ ,我们增加 ri
阅读全文
摘要:题目:给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素 归并排序 思路及算法 由题目给出的性质可知,这个矩阵的每一行均为一个有序数组。问题即转化为从这 n 个有序数组中找第 k 大的数,可以想到利用归并排序的做法,归并到第 k 个数即可停止。 一般归并排序是两个
阅读全文
摘要:题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 方法一:哈希法 思路:从下标0开始逐个取出字符串的字符,将字符作为key,下标作为value存入map中,然后下标逐渐增加,同时更新最长不重复子串的长度,即为map的size和length自身较大的。当map中包含该下标对应的key
阅读全文
摘要:题目:给出两个非空的链表用来表示两个非负的整数。其中它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 算法思路: 就像你在纸上计算两个数字的和那样,我
阅读全文
摘要:题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 方法一:暴力法 暴力法很简单,遍历每个元素 x,并查找是否存在一个值与 target - x相
阅读全文
摘要:题目:你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!" 已经变成了"iresetthecomputeritstilldidntboot"。在处理标点符号和大小写之前,你得先把它断成词语
阅读全文
摘要:题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 题解: 维护两个栈,第一个栈支持插入操作,第二个栈支持删除操作。根据栈
阅读全文
摘要:题目:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。 方法一:暴力法 暴力法是最直观的方法。初始化子数组的最小长度为无穷大,枚举数组nums中的每个下标作为子数组的开始下标对于每个开始
阅读全文
摘要:题目: 给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。 ‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。 说明: s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z
阅读全文
摘要:题目:你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 题解 首先考虑两种边界情况。 如果 k=0,则不能建造任何跳水板,因此返回空
阅读全文
摘要:题目描述:给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。 方法一:暴力法 方法二:暴力法优化版 方法三:二分查找 方法四:划
阅读全文