每周一道算法题
时光息怒
GitHub地址:https://github.com/MyJus
展开
-
判断子序列(t是否由和其他字符组成)
题目: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。 示例1: s = "abc", t = "ahbgdc" 返回true. 示例2: ...原创 2020-07-31 16:44:14 · 255 阅读 · 0 评论 -
交错字符串(s3是否由s1和s2组成)
题目: 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。 例: 输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac" 输出:true 例:输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc" 输出:false 例:输入:s1 = "aa", s2 = "ac", s3 = "aaca" 输出:true 思考: 我只想简单的实现,取出当前s3的下标,和s1...原创 2020-07-22 16:02:57 · 1204 阅读 · 0 评论 -
三角形最小路径和(个人解题思路记录)
题目: 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。 [ [2], [3,4], [6,5,7], [4,1,8,3] ] 示例,返回11,路径为2-3-5-1,不要求返回路径,辅助空间不限(越小越好) 解: 说一下我自己的解题过程,最开始想到的是递归,递归也可...原创 2020-07-15 15:28:30 · 294 阅读 · 0 评论 -
最长有效括号和共有多少个搜索二叉树
题1: 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" 示例 2: 输入: ")()())" 输出: 4 解释: 最长有效括号子串为 "()()" 解:贪心法 遍历字符串记录 '(' 和 ')' 的个数。 func longestValidParentheses(_ s: String) -> Int { if s.count ...原创 2020-07-15 15:01:02 · 132 阅读 · 0 评论 -
寻找n*n有序二维数组中第K小的数
题目:给定一个n x n矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素 举例: matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15] ], k = 8 返回 13 看到题目首先想到将二维数组转为一维数组,再进行排序,取出第k个元素,这样的解法没有问题,可以正确得到结果。 排序算法就不写了,应该都很熟。。。 这里介绍一个更好的方法 /* 寻找有序二维数组(n * n)中第K小的数 */ bool check(int...原创 2020-07-10 15:25:38 · 1774 阅读 · 0 评论