最长连续序列
摘要:题目: 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 思路: 遍历每个数,假设该数是序列的起点,判断该数+1是否在数
阅读全文
买卖股票的最佳时机
摘要:题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1: 输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候
阅读全文
二叉树展开为链表
摘要:题目: 题目描述: 给定一个二叉树,原地将它展开为链表。 例如,给定二叉树 将其展开为: 代码如下: class Solution(object): def flatten(self, root): """ :type root: TreeNode :rtype: None Do not retur
阅读全文
不同的二叉搜索树
摘要:题目: 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 解题思路: 继续: class Solution: def numTrees(self, n): """ :type n: int :rtype: int """ G = [0]*(n+1) G[0], G[1] =
阅读全文
柱状图中最大的矩形
摘要:分治算法: 通过观察,可以发现,最大面积矩形存在于以下几种情况: 确定了最矮柱子以后,矩形的宽尽可能往两边延伸。 在最矮柱子左边的最大面积矩形(子问题)。 在最矮柱子右边的最大面积矩形(子问题)。 举个例子:[6, 4, 5, 2, 4, 3, 9] 这里最矮柱子高度为 2 。以 2 为高的最大子矩
阅读全文
单词搜索
摘要:题目: 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board =[ ['A','B','C','E'], ['S','F','C',
阅读全文
子集
摘要:题目: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []] 代码: def ac(ls):
阅读全文
最小覆盖子串
摘要:题目: 给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串。 示例: 输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC" 说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯一的答
阅读全文
颜色分类问题
摘要:题目: 解题思路: 代码: class Solution: def sortColors(self, nums: List[int]) -> None: ''' 荷兰三色旗问题解 ''' # 对于所有 idx < p0 : nums[idx < p0] = 0 # curr是当前考虑元素的下标 p0
阅读全文
最大子序列的和
摘要:题目: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 解题思路: 代码如下: class Solution
阅读全文
字母异位词分组
摘要:题目: 题目描述: 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入:["eat","tea","tan","ate","nat","bat"], 输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"] ]
阅读全文
接雨水
摘要:题目如下: 方法一:动态编程解题思路: 代码如下: int trap(vector<int>& height) { if(height == null) return 0; int ans = 0; int size = height.size(); vector<int> left_max(siz
阅读全文
合并K个排序链表
摘要:题目: 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 代码 class Solution(object): def mergeKLists(self, lists): """ :type lists: List[ListNode] :rtype: ListNode """
阅读全文
括号生成
摘要:题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 解题思路: 我们可以采用暴力求解法,生成所有可能的组合,再
阅读全文
有效的括号
摘要:给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。 括号必须以正确的顺序关闭,”()” 和 “()[]{}” 是有效的但是 “(]” 和 “([)]” 不是。 思路: 利用一个列表模拟堆栈进行匹配,遍历字符串,遇见左括号就进行入栈操作,遇见一次右括号就进行
阅读全文
电话号码的自由组合
摘要:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。dianhua 示例: 输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 代码如
阅读全文
正则表达式匹配
摘要:给定一个字符串 (s) 和一个字符模式 (p)。实现支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符。 ‘*’ 匹配零个或多个前面的元素。 匹配应该覆盖整个字符串 (s) ,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-
阅读全文
最长回文子串
摘要:问题描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。 解题思路: 代码如下: class Solution: def longestPalindrome(self, s:
阅读全文
无重复字符的最长子串
摘要:题目:无重复字符的最长子串。 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是
阅读全文
n个骰子的点数之和
摘要:题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。 解题思路:动态规划 第一步,确定问题解的表达式。可将f(n, s) 表示n个骰子点数的和为s的排列情况总数。 第二步,确定状态转移方程。n个骰子点数和为s的种类数只与n-1个骰子的和有关。因为一个骰
阅读全文
|
|