上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 25 下一页
摘要: 算法 集合:所有S[1~i]和P[1~j]的匹配方案 属性:是否存在一个合法方案(bool) 如果p[j] != '*',dp[i][j] = dp[i-1][j-1] && (s[i]==p[j] || p[j]=='?') 如果p[j] == '*',dp[i][j] = dp[i][j - 1 阅读全文
posted @ 2022-11-16 13:22 INnoVation-V2 阅读(25) 评论(0) 推荐(0)
摘要: 算法1.三次线性扫描$O(n)$ 观察整个图形,考虑对水的面积按 列 进行拆解 注意到,每个矩形条上方所能接受的水的高度,是由它左边 最高的 矩形,和右边最高的矩形决定的。 具体地,假设第 i 个矩形条的高度为 height[i],且矩形条左边 最高的 矩形条的高度为 left_max[i],右边 阅读全文
posted @ 2022-11-16 12:38 INnoVation-V2 阅读(63) 评论(0) 推荐(0)
摘要: 前置算法: 复原数组 先看一个基础算法, 快速复原一个无序数组, 使得nums[i] == i, 且数组中的元素都是从0开始的有序数 比如数组长度为5,那么数组中的元素就是0 1 2 3 4,且不重复 要恢复这个数组,使得num[i] == i, 就是使用交换,代码如下 void reset(vec 阅读全文
posted @ 2022-11-16 11:40 INnoVation-V2 阅读(19) 评论(0) 推荐(0)
摘要: 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 思路 首先考虑,在什么情况下出现的重复? 以[1,1,2]为例,分别选了第1个1和第二个1为开头时,会出现重复结果 解决方法是: 如果不选某个元素,那么和这个元素相等的后续元素也应该跳过 即,如果选了第一个1,那么后续的 阅读全文
posted @ 2022-11-15 19:02 INnoVation-V2 阅读(27) 评论(0) 推荐(0)
摘要: GO语言声明语法 原文地址 介绍 Go新手想知道为什么Go的声明语法与C语言等的传统声明语法不同。在这篇文章中,我们将比较这两种方法,并解释为什么Go的声明是这样的。 C语法 首先,让我们谈谈C语言的语法。C使用了一个不寻常但聪明的声明语法。没有使用特殊的语法来描述类型,而是编写一个涉及被声明字段的 阅读全文
posted @ 2022-11-13 02:16 INnoVation-V2 阅读(96) 评论(0) 推荐(0)
摘要: 思路 为什么会出现重复? 以{1,1,7}和target = 8为例, 如果不选0号位置的1,那么1号位置的1就也不应该选 否则0号位置的1和7构成一个结果 在不选0号位置时,1号位置的1和7又构成一个结果 从而发生重复 所以去重的思路就是如果不选某个元素,那么之后和他相等的元素都应该跳过 代码 c 阅读全文
posted @ 2022-11-10 13:12 INnoVation-V2 阅读(16) 评论(0) 推荐(0)
摘要: 思路 先把数组排序 先枚举i,再枚举j,确定了i和j的值,在保证$nums[i] + nums[j] + nums[k - 1] >= 0$的条件下,找到k的最小值,之后查看三数相加是否等于0,如果相等,记录答案,如果不等,那就继续枚举i和j 这里的j和k的确定使用的是双指针做法,因为有序,因此每次 阅读全文
posted @ 2022-11-08 14:44 INnoVation-V2 阅读(34) 评论(0) 推荐(0)
摘要: 思路 动态规划 将字符或'.' + '*'当做一个整体进行处理,因此如果下一个位置是*,那就跳过当前位置 当p[j] != '*'时,那就是字符匹配,此时i必须大于0,因为s[i]必须是一个字符才能进行匹配 此时dp[i][j] = dp[i - 1][j - 1] && (s[i] == p[j] 阅读全文
posted @ 2022-11-08 13:52 INnoVation-V2 阅读(53) 评论(0) 推荐(0)
摘要: 思路 - 找规律 找规律题 每一行都是等差数列 样例 输入:s = "PAYPALISHIRING", numRows = 3 输出:"PAHNAPLSIIGYIR" 解释: P A H N A P L S I I G Y I R 第一行和最后一行字符间的距离是2*numRows - 2 中间几行: 阅读全文
posted @ 2022-11-08 13:51 INnoVation-V2 阅读(41) 评论(0) 推荐(0)
摘要: 思路 原问题难以直接递归求解,所以我们先考虑这样一个问题: 在两个有序数组中,长度分别为n、m, 找出第k小数。 如果该问题可以解决,那么第 k = (n+m)/2 小数就是我们要求的中位数. 先从简单情况入手,假设 m,n ≥ k/2,我们先从 nums1 和 nums2 中各取前 k/2 个元素 阅读全文
posted @ 2022-11-08 13:51 INnoVation-V2 阅读(30) 评论(0) 推荐(0)
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 25 下一页