![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
每天算法题
每天一个小算法
加油吧~!少年
本人新手程序员一枚,初来乍到,请多多指教
展开
-
正则表达式匹配实现
<leecode 第十题> 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和*。 例如 1. aa 和 a*是匹配的 因为*可以匹配前面的字符0个或多原创 2020-06-30 13:06:39 · 411 阅读 · 0 评论 -
523. 连续的子数组和
<leecode 523题> 给定一个包含 非负数 的数组和一个目标 整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,且总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。 示例 1: 输入:[23,2,4,6,7], k = 6 输出:True 解释:[2,4] 是一个大小为 2 的子数组,并且和为 6 解法一 : 前缀和的暴力搜索(O(n^2) ) 我们遍历每一个连续的序列, 判断他是否满足条件, 我们使用前缀和(这种解法相信不用多说就会的) publi原创 2020-06-23 21:18:03 · 213 阅读 · 0 评论 -
连续子数组的最大和
<leecode 第53题> 输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 解答: 看到这种题目, 一目了然,我们第一想到的应该是穷举法, 复杂度为平方阶, 显然不是我们想要的,我们是否有时间复杂度为更小甚至为 O(n)的呢, 显然是有的 ** 解法一: 分治算法 ** 第一次原创 2020-06-23 13:57:37 · 414 阅读 · 0 评论 -
198. 打家劫舍
给定一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。 开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。 示例 1: 输入: nums = [3, 4, 2] 输出: 6 解释: 删除 4 来获得 4 个点数,因此 3 也被删除。 之后,删除 2 来获得 2 个点数。总共获得 6 个点数。 示例 2: 输入: nums = [2原创 2020-06-21 17:13:10 · 126 阅读 · 0 评论 -
不同的二叉搜索树
<leecode 96题> 给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ 3 2 1 1 3 2 / / \ 2原创 2020-06-20 17:00:15 · 230 阅读 · 0 评论 -
最大以1为边界的正方形
<leecode 第1139题> 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 0。 示例 1: 输入:grid = [[1,1,1],[1,0,1],[1,1,1]] 输出:9 示例 2: 输入:grid = [[0, 0,0],[0,1,1],[0, 1,1]] 输出:4 我们的思路如下 设置一个dp三维数组, dp[grid.length + 1][grid[0].length +原创 2020-06-20 16:53:58 · 164 阅读 · 0 评论