03 2021 档案
摘要:分割回文串 II 解题思路 跟最长递增子序列思路一样,使用动态规划。 定义 dp[i] 为结尾为i的最小回文串次数. 当[0,i]为回文串时,则dp[i]为0 当[0,i]不为回文串时, 循环求最小的分割次数 如何循环 从0开始一直到i-1,作为j。如果[j + 1, i]为回文串,则取dp[j]
阅读全文
摘要:最长递增子序列 参考 动态规划 (包含O (N log N) 解法的状态定义以及解释) 动态规划1 定义dp[i]:结尾为i的最长序列长度. class Solution { /** * @param Integer[] $nums * @return Integer */ function len
阅读全文
摘要:分割回文串 回溯算法 求所有解,所以使用回溯算法来枚举所有的解。代码如下 class Solution { /** * @param String $s * @return String[][] */ function partition($s) { $res = []; $this->backtr
阅读全文
摘要:下一个更大元素 II 思路及解法 可以使用单调栈来解决这个问题。假如[9,8,7,10]这个数组,比9,8,7大的数字为10。即如果i比i-1小的话,则i和i-1的下一个最大数字相等。所以 如果i<i-1,则入栈 如果i>i-1,则出栈,直到栈顶的值大于i。 循环数组 因为该数组是循环的数组,可能出
阅读全文
摘要:快速排序及其优化 基础快速排序 /** * 基础快速排序 * @param $sortData * @return array */ function quickSort($sortData){ $count = count($sortData); if ($count <= 1) return $
阅读全文
摘要:比特位计数 解法1 首先,根据可以很轻松的想到可以循环number,然后找对应的number二进制数中的1的数量。代码如下 class Solution { /** * @param Integer $num * @return Integer[] */ function countBits($nu
阅读全文
摘要:至少有 K 个重复字符的最长子串 递归的方式 对于这个字符串来说,如果某个字符(比如t)的数量小于k的话,那么满足要求的一定在用t分割的字符串的所有字串中。运用这种思想,可以使用递归的方法来求解。代码如下 class Solution { /** * @param String $s * @para
阅读全文
摘要:猜字谜 解法 首先将word单词进行二进制压缩,重复的单词去掉,组成sword哈希映射。然后循环puzzle,先求出puzzle的所有解(这个可以用leetcode每日一题之4.子集来求),然后在sword中匹配,加上相应的数量。代码如下 class Solution { /** * @param
阅读全文