【Leetcode】33.搜索旋转排序数组 33 搜索旋转排序数组题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。 示例 1:输入: nums = [4,5,6,7,0 2021-02-19 算法 二分查找
【Leetcode】241.为运算表达式设计优先级 241.为运算表达式设计优先级题目给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。 示例 1: 输入: "2-1-1" 输出: [0, 2] 解释: ((2-1)-1) = 0 (2-(1-1)) = 2 示例 2: 输入: "2*3-4*5" 2021-02-19 算法 分治算法
【Leetcode】215.数组中的第K个最大元素 215.数组中的第K个最大元素题目在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 说明: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。 方 2021-02-19 算法 分治算法
【Leetcode】95.不同的二叉搜索树 II 95.不同的二叉搜索树 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 2021-02-19 算法 分治算法
【Leetcode】23.合并K个升序链表 23. 合并K个升序链表题目给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 1->3->4, 2->6 ] 将它们合并到一个有序链表中得到。 1 2021-02-19 算法 分治算法
【Leetcode】438.找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词题目给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。 说明: 字母异位词指字母相同,但排列不同的字符串。 不考虑答案输出的顺序。 示例 示例 1: 输入: s: "cbaebabacd" p: 2021-02-19 算法 滑动窗口
【Leetcode】424.替换后的最长重复字符 424. 替换后的最长重复字符题目给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。 示例 1: 输入:s = "ABAB", k = 2 输出:4 解释:用两个'A'替换为两个'B',反之亦然。 示例 2: 输入:s = "AA 2021-02-19 算法 滑动窗口
【Leetcode】219.存在重复元素II 219.存在重复元素II题目:给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。 示例 1: 输入: nums = [1,2,3,1], k = 3 输出: true 示例 2: 输入: nums = [1,0,1,1], k = 1 输出: true 示例 3: 输入: n 2021-02-19 算法 滑动窗口
【Leetcode】209.长度最小的子数组 209 长度最小的子数组题目:给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。 示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组[4,3]是该条件下的长度最小的连续子数组。 思路:滑动窗口法当输出或比较的结果在原数据结构中是连续排列的时候,可以使用 2021-02-19 算法 滑动窗口
【Leetcode】3.无重复字符的最长子串 3 无重复字符的最长子串题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 思路:滑动窗口法想象一个窗口,当abc进入窗口后,无重复字符,目前最长子串长度为3.当后一个a进入后,变成了abca出现了重复字符a。所以要将窗口进行滑动,以满足要求。如何滑动?将队列左边的元 2021-02-19 算法 滑动窗口