摘要: MySQL 是如何解决幻读的 一、什么是幻读 在一次事务里面,多次查询之后,结果集的个数不一致的情况叫做幻读。而多或者少的那一行被叫做 幻行 二、为什么要解决幻读 在高并发数据库系统中,需要保证事务与事务之间的隔离性,还有事务本身的一致性。 三、MySQL 是如何解决幻读的 如果你看到了这篇文章,那 阅读全文
posted @ 2019-04-04 15:40 吴丹阳-cn 阅读(17642) 评论(6) 推荐(6) 编辑
摘要: 题目 1567. 乘积为正数的最长子数组长度 解法 解法一 算是贪心吧? 遍历的方向从前往后也是一样的道理,只不过当时写代码的时候从后往前想的,就这么写了 class Solution { /** * @param Integer[] $nums * @return Integer */ funct 阅读全文
posted @ 2022-01-08 17:09 吴丹阳-cn 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目 152. 乘积最大子数组 解法 每次取一个最小的,一个最大的 如果最小的乘积和当前的值乘完之后变成了正数反而变大了,那最大值就是它 class Solution { /** * @param Integer[] $nums * @return Integer */ function maxPr 阅读全文
posted @ 2022-01-08 17:08 吴丹阳-cn 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目 53. 最大子数组和 解法 #dp 第一版写的时候,可以加一个 dp 数组,保存每个节点的最大值 dp 公式 \[ f_n= \begin{cases} max(nums[n]+f_{n-1}, nums[n]) & n>=1 \\ nums[n], & n=0 \end{cases} \] 阅读全文
posted @ 2022-01-08 17:07 吴丹阳-cn 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目 918. 环形子数组的最大和 解法 求两个值,一个是子数组最小值,一个是子数组最大值 环形数组如果没有跨最后一个那就是子数组最大值 如果跨了最后一个那就是 总数- 子数组最小值 为什么是 total-min ? 如果成环状,那么数组将被分成两段:头和尾 总数是不变的,如果其他部分加起来最大,那 阅读全文
posted @ 2022-01-08 17:07 吴丹阳-cn 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目 45. 跳跃游戏 II 解法 遍历的同时记录 stepCnt 只有在第一个 max 遍历完之后,才可以增加 stepCnt class Solution { /** * @param Integer[] $nums * @return Boolean */ function jump($num 阅读全文
posted @ 2022-01-08 17:06 吴丹阳-cn 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目 55. 跳跃游戏 解法 最终目标是求最大跳跃距离,如果最后发现可以跳到比最后一格要多,那么也就可以跳到最后一格 可以按照两种思想理解 贪心,每次求最大的跳跃距离 dp 公式: \(f_n=\left \{ \begin{array}{lr} max(f_{n-1}, nums[n] + n), 阅读全文
posted @ 2022-01-08 17:05 吴丹阳-cn 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目 740. 删除并获得点数 解法 class Solution { /** * @param Integer[] $nums * @return Integer */ function deleteAndEarn($nums) { $sum = []; $max = 0; foreach ($n 阅读全文
posted @ 2022-01-08 17:04 吴丹阳-cn 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 打家劫舍模板: function rob($nums) { $first = $nums[0]; $second = max($nums[1], $nums[0]); for ($i = 2; $i < count($nums); $i++) { $tmp = $second; $second = 阅读全文
posted @ 2022-01-08 17:03 吴丹阳-cn 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目 213. 打家劫舍 II 解法 因为是首尾相连的 用原来的 198 题的方法有可能会多算一个 经过一番尝试之后,最终使用了两次遍历的方法 第一次,从0开始,不计算最后一个 第二次,从1开始,计算上最后一个 当然,ret 数组可以简化成两个变量,这里就不继续处理了 class Solution 阅读全文
posted @ 2022-01-08 17:02 吴丹阳-cn 阅读(2) 评论(0) 推荐(0) 编辑
摘要: # 题目 [198. 打家劫舍](https://leetcode-cn.com/problems/house-robber/) # 解法 $$ fn= \left\{ \begin{array}{**lr**} max(f_{n-1}, f_{n-2}+nums[n]), & n\geq 2 \\ nums[0], & n=0 & \\ max(nums[1], nums[0]), & n=1 & \\ \end{array} \right. $$ 阅读全文
posted @ 2022-01-04 14:04 吴丹阳-cn 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 换输入法的背景 平时用的输入法都会联网上传很多数据到云端,这些数据经过大数据分析之后,能够用来精准推送一些你感兴趣的东西,烦不胜烦。 于是,我打算找一个不会联网的输入法,并且切换成本还不能太高。 后来找到了,那就是 Rime(中州韵输入法引擎)。 Rime 官网 配置 但是呢,如果你直接使用,会发现 阅读全文
posted @ 2022-01-03 23:31 吴丹阳-cn 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 题目 746. 使用最小花费爬楼梯 解法 \[ fn= \left\{ \begin{array}{**lr**} min(f_{n-1}, f_{n-2})\ +\ n, & n\geq 3 \\ n, & n=0|n=1 & \\ \end{array} \right. \] class Sol 阅读全文
posted @ 2022-01-03 21:31 吴丹阳-cn 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 我的 Obsidian 链接图,不知不觉已经使用了一年多了 阅读全文
posted @ 2022-01-02 23:02 吴丹阳-cn 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 题目 1137. 第 N 个泰波那契数 解法 跟斐波纳契数列一样的解法 class Solution { /** * @param Integer $n * @return Integer */ function tribonacci($n) { if ($n <= 0) { return 0; } 阅读全文
posted @ 2022-01-02 22:44 吴丹阳-cn 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目 506. 相对名次 解法 class Solution { /** * @param Integer[] $score * @return String[] */ function findRelativeRanks($score) { if (empty($score)) { return 阅读全文
posted @ 2022-01-02 22:43 吴丹阳-cn 阅读(4) 评论(0) 推荐(0) 编辑
摘要: #leetcode 题目 501. 二叉搜索树中的众数 解法 主要是考的一个特性: 二叉搜索树的中序遍历结果是递增的数列 然后就相当于是对一个递增数列求众数的逻辑了 class Solution { private $maxCount = 0; private $base = null; priva 阅读全文
posted @ 2022-01-02 22:42 吴丹阳-cn 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 题目 504. 七进制数 解法 进制转换的通用做法 class Solution { /** * @param Integer $num * @return String */ function convertToBase7($num) { $ret = ''; $mul = $num < 0 ? 阅读全文
posted @ 2022-01-02 22:42 吴丹阳-cn 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目 496. 下一个更大元素 I 解法 遍历一遍 nums2 , 算出来每个元素的下一个最大元素,然后遍历 nums1 取结果 暴力解法: class Solution { /** * @param Integer[] $nums1 * @param Integer[] $nums2 * @ret 阅读全文
posted @ 2022-01-02 22:41 吴丹阳-cn 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目 500. 键盘行 解法 很简单,首先维护一个字符位置的映射关系,判断每个字符的每一位是否在一行 #哈希表 class Solution { const LINE_CHARS = [ 'q' => 1, 'w' => 1, 'e' => 1, 'r' => 1, 't' => 1, 'y' => 阅读全文
posted @ 2022-01-02 22:41 吴丹阳-cn 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 题目 495. 提莫攻击 解法 返回中毒秒数 class Solution { /** * @param Integer[] $timeSeries * @param Integer $duration * @return Integer */ function findPoisonedDurati 阅读全文
posted @ 2022-01-02 22:40 吴丹阳-cn 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目 492. 构造矩形 解法 class Solution { /** * @param Integer $area * @return Integer[] */ function constructRectangle($area) { if ($area <= 0) { return []; } 阅读全文
posted @ 2022-01-02 22:39 吴丹阳-cn 阅读(4) 评论(0) 推荐(0) 编辑
摘要: #leetcode 题目 482. 密钥格式化 解法 用了很多 php 的函数,但是思想就是几个步骤 将源字符串的 - 去掉 从后往前遍历字符串,每 $k 个字符一组,拼接上 - 字符 class Solution { /** * @param String $s * @param Integer 阅读全文
posted @ 2022-01-02 22:38 吴丹阳-cn 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目 476. 数字的补数 解法 进制转换 进制转换有一个固定的模板,我是用的比较直观的一种方式 class Solution { /** * @param Integer $num * @return Integer */ function findComplement($num) { $ret 阅读全文
posted @ 2021-11-13 14:28 吴丹阳-cn 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 题目 463. 岛屿的周长 解法 依题遍历陆地的四个边,如果靠近水,那么算到周长里面,否则不算 <?php class Solution { /** * @param Integer[][] $grid * @return Integer */ function islandPerimeter($g 阅读全文
posted @ 2021-11-12 12:19 吴丹阳-cn 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目 https://leetcode-cn.com/problems/repeated-substring-pattern/ 解法 每次用不同的子字符串去匹配, 大概20分钟从看题目到写出来答案,直觉思路 class Solution { /** * @param String $s * @ret 阅读全文
posted @ 2021-11-10 13:37 吴丹阳-cn 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目 https://leetcode-cn.com/problems/assign-cookies/ 解法 直觉思路 先排序,然后根据胃口最小的孩子找能满足的最小的饼干 class Solution { /** * @param Integer[] $g * @param Integer[] $s 阅读全文
posted @ 2021-11-09 22:49 吴丹阳-cn 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 题目 https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements/ 解法 这题不会,直接看的题解 意思就是反向思考,每次 n-1 个数字加一,可以认为是一个数字减一,直到所有数字相等 那只能是所有的数字减到最小值才能使 阅读全文
posted @ 2021-11-08 20:24 吴丹阳-cn 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 题目 https://leetcode-cn.com/problems/longest-palindrome/ 解法 先理解回文串的定义 假设有 m 对字符,根据回文串的定义可得 全部两两成对之后,那就是 2*m 非两两成对,最后可以在中间放一个,那就是 2*m + 1 class Solution 阅读全文
posted @ 2021-07-15 23:44 吴丹阳-cn 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 题目 https://leetcode-cn.com/problems/convert-a-number-to-hexadecimal/ 解法 要处理一下负数,算出反码之后再进行转换进制 除以 16 取整,使用了一个小技巧:$num >>= 4; class Solution { private $ 阅读全文
posted @ 2021-07-15 23:38 吴丹阳-cn 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 题目 https://leetcode-cn.com/problems/sum-of-left-leaves/ 解法 树的遍历,so easy /** * Definition for a binary tree node. * class TreeNode { * public $val = nu 阅读全文
posted @ 2021-07-15 23:35 吴丹阳-cn 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目 https://leetcode-cn.com/problems/reverse-vowels-of-a-string/ 解法 双指针 666 来全场跟我左边画条龙,右边跟我画一道彩虹 class Solution { const VOWELS = ['a' => 1, 'e' => 1, ' 阅读全文
posted @ 2021-07-15 23:32 吴丹阳-cn 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 题目 题目 https://leetcode-cn.com/problems/word-frequency/ 一行命令搞定 解法 grep -oP "\w+" words.txt | sort | uniq -c | sort -nrk1 | awk '{print $2 " " $1}' 阅读全文
posted @ 2021-07-15 23:24 吴丹阳-cn 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 338. 比特位计数 class Solution { /** * @param Integer $n * @return Integer[] */ function countBits($n) { $ret = [0]; for ($i = 1; $i <=$n; $i++) { // 上一个数字 阅读全文
posted @ 2021-06-14 21:04 吴丹阳-cn 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 话不多说,上代码,差点栽在一个简单题手里,也是我没有想到的 其实呢,我有两种思路 一种就是把小时和分钟的所有位表示的数字都枚举出来,然后最后处理一下最后的输出格式就行了,这个可行,但是废手,而且容易出错 另外一种就是利用递归的方式,计算出每一步的所有可能值 第一种方式:暴力破解,是真的暴力 clas 阅读全文
posted @ 2021-06-13 23:18 吴丹阳-cn 阅读(19) 评论(0) 推荐(0) 编辑
摘要: https://leetcode-cn.com/problems/is-subsequence/ 双指针法 <?php class Solution { /** * @param String $s * @param String $t * @return Boolean */ function i 阅读全文
posted @ 2021-06-13 14:23 吴丹阳-cn 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 题目 155. 最小栈 解法 辅助栈 用辅助栈存当前栈中的最小值 class MinStack { private $stack = []; private $minStack = []; /** * initialize your data structure here. */ function 阅读全文
posted @ 2021-06-02 18:10 吴丹阳-cn 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 题目 111. 二叉树的最小深度 解法 跟上一题一样的思路 class Solution { private $minDepth = 0; /** * @param TreeNode $root * @return Integer */ function minDepth($root) { if ( 阅读全文
posted @ 2021-06-02 18:09 吴丹阳-cn 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 题目 110. 平衡二叉树 解法 在遍历树的同时,将高度差求出,如果有一个高度差的绝对值大于 1,那么就不用再继续了,可以直接退出返回 false class Solution { private $ret = true; /** * @param TreeNode $root * @return 阅读全文
posted @ 2021-06-02 18:08 吴丹阳-cn 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 题目 https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ 解法 class Solution { /** * @param ListNode $head * @return ListNode */ function 阅读全文
posted @ 2021-05-30 21:59 吴丹阳-cn 阅读(12) 评论(0) 推荐(0) 编辑
摘要: #leetcode 题目 https://leetcode-cn.com/problems/add-binary/ 解法 题解中有三种方法,我用了模拟法,还算是比较简单 class Solution { /** * @param String $a * @param String $b * @ret 阅读全文
posted @ 2021-05-30 21:36 吴丹阳-cn 阅读(13) 评论(0) 推荐(0) 编辑