随笔分类 - base.算法
leetCode中做的一些题,总结总结
摘要:分割回文串 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
阅读全文
摘要:子集 方法1:迭代法 即从空数组开始,循环所有的数字,每次往已生成子集的数组后添加数字。得出的就是所有子集,代码如下: class Solution { /** * @param Integer[] $nums * @return Integer[][] */ function subsets($n
阅读全文
摘要:爱生气的书店老板 解题思路,首先计算不算X的所有满意的客户数量。然后计算X时间可能产生的最大的客户满意数量,即使用滑动窗口的方式,从左往右,找出最大的值,加上之前的值即可。代码如下 class Solution { /** * @param Integer[] $customers * @param
阅读全文
摘要:托普利茨矩阵 第一种方式 首先,第一种方法是循环每一个行的数据和上一行左上角的数据进行比较。代码如下 class Solution { /** * @param Integer[][] $matrix * @return Boolean */ function isToeplitzMatrix($m
阅读全文
摘要:十大排序算法 参考 十大经典排序算法 冒泡排序优化 插入排序优化
阅读全文
摘要:3.插入排序 <?php /** * 基础插入排序 * */ function insertionSort($sortData) { $count = count($sortData); $sortCount = 0; for ($i = 1; $i < $count; $i++) { $preIn
阅读全文
摘要:2.选择排序 <?php /** * 基础选择排序 * */ function selectionSort($sortData) { $count = count($sortData); $sortCount = 0; for ($i = $count - 1; $i > 0; $i--) { $m
阅读全文
摘要:1. 冒泡排序 <?php /** * 原始冒泡排序 */ function bubbleSort($sortData) { $count = count($sortData); $sortCount = 0; for ($i = 0; $i < $count - 1; $i++) { for ($
阅读全文