08 2026 档案
摘要:C++值类型 纯右值,通常是用于初始化对象使用的字面值,或者是某个运算式的结果,不可以取地址,不可以被赋值,不具备标识符 左值,有标识符可以取地址,可以放在赋值号左侧的,需要注意函数在C++中被认为是左值,函数可以被取地址,尽管不能被赋值。而C语言中函数既非左值也非右值 将亡值,指一个即将被销毁,但
阅读全文
摘要:Claude shift + tab切换工作模式 /model 切换模型(sonnet性价比,opus在复杂问题,多个文件时使用,opusplan用opus思考sonnet做功能,Haiku最简单) /compact 压缩对话内容保留message(对话过多上下文会丢失) 会话间跳转用CLAUDE.
阅读全文
摘要:MemTable简介 MemTable是LSM Engine内存的主要数据结构,负责管理内存中的多个跳表,其中有一个活跃跳表和多个只读的冻结跳表,此外MemTable还负责从跳表到后续SST文件的转换。 初步实现 MemTable的初步实现就是对跳表做封装,此外暂时先提供互斥锁管理,后续可能做出改变
阅读全文
摘要:SkipList介绍 跳表是一个多级的链表,在最低一级是完整的链表,级数越高每一级的节点数相应减少,同一个节点可以在上下级之间转换,前提是不超出该节点能表示的层级数,这样遍历时通过高级跳表一次就可以跳过多个节点从而减少查找某个节点所需要的时间,此外跳表节点又可以按照一定的顺序排序,这样也便于后续实现
阅读全文
摘要:git rebase / git rebase -i,用于整理git历史,也可以修改commit message,常用的有: pick(选取,相当于完整保留commit) fixup(与它之前的commit合并,可以丢弃一些意义不大的小commit) squash(压缩commit meessage
阅读全文
摘要:题目描述: 给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 算法思路: 本题思路与LCR 170. 交易逆序对的总数思路类似,同样是通过利用归并排序计算某个元素右
阅读全文
摘要:题目描述: 在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。请设计一个程序,输入一段时间内的股票交易记录 record,返回其中存在的「交易逆序对」总数。 算法思路: 考虑逆序数的定义是在一个数组中有两个下标分别为i,j的元素,有i < j,nums[i] > nu
阅读全文
摘要:逻辑代数 在学习完二进制原码补码反码之后,就可以进入了对逻辑代数的学习。 逻辑代数首先是一种对二进制进行逻辑运算的代数,它的取值只有0和1两种,基本的计算方式有与,或,非,可以用逻辑函数式表达为Y = A · B(与) Y = A + B(或) Y = A'(非)。 基于与或非可以得到逻辑代数的常用
阅读全文
摘要:为了用二进制表示十进制,早期有几种编码方式,这些编码方式是补码出现常用的处理二进制和十进制关系的编码方式, 由于十进制一共有0 ~ 9十个数,这几种编码方式都需要4bit, 8421码,这是最简单直接的编码方式,它为每一位bit i附上了2^(i-1)的权值(1 <= i <= 4),使用这种方式可
阅读全文
摘要:晶体管容易实现加法电路,但实现减法电路很复杂, 二进制码型的乘法由被乘数和0的左移和加法构成, 除法由被除数或余数减去被除数的右移构成, 因此如果可以将减法用加法代替,则所有二进制计算都可以用加法和位移运算代替 首先采用原码 原码是指用二进制数的最高位表示正负,其余位表示数值大小 例如 7 = 01
阅读全文
摘要:题目描述: 给定一个非负整数数组 nums 和一个整数 k ,你需要将这个数组分成 k 个非空的连续子数组,使得这 k 个子数组各自和的最大值 最小。 返回分割后最小的和的最大值。 子数组 是数组中连续的部分。 算法思路: 题目要求将数组划分为k个有序子数组,并且要求在限定k个子数组的情况下所有子数
阅读全文
摘要:题目描述: 给你一个整数数组 bloomDay,以及两个整数 m 和 k 。 现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。 花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。 请你返回从花园中摘 m 束花需要等待的最少的天数。
阅读全文
摘要:题目描述: 为了提高自己的代码能力,小张制定了 LeetCode 刷题计划,他选中了 LeetCode 题库中的 n 道题,编号从 0 到 n-1,并计划在 m 天内按照题目编号顺序刷完所有的题目(注意,小张不能用多天完成同一题)。 在小张刷题计划中,小张需要用 time[i] 的时间完成编号 i
阅读全文
摘要:题目描述: 给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。 如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值
阅读全文
摘要:题目描述: 给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。 如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值
阅读全文
摘要:题目描述: 给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。 算法
阅读全文
摘要:题目描述: 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 算法思路: 题目要求计算一个非负整数的算数平方根且静止使用任何
阅读全文
摘要:题目描述: (这是一个 交互式问题 ) 你可以将一个数组 arr 称为 山脉数组 当且仅当: arr.length >= 3 存在一些 0 < i < arr.length - 1 的 i 使得: arr[0] < arr[1] < ... < arr[i - 1] < arr[i] arr[i]
阅读全文
摘要:题目描述: 给定一个长度为 n 的整数 山脉 数组 arr ,其中的值递增到一个 峰值元素 然后递减。 返回峰值元素的下标。 你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。 算法思路: 按照题目,山峰数组会递增到峰值元素然后递减,因此在山峰的某一侧不会出现相同的数值,但山峰两侧可能出
阅读全文
摘要:题目描述 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。 算法思路: 第一次尝试, 首先,两个有序数组要找到中位数需要先知道数组长度,当m + n的值为奇数时中位数的
阅读全文
摘要:题目描述 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0],
阅读全文
摘要:题目描述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 向左旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1
阅读全文
摘要:题目描述 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,4] 若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]
阅读全文
摘要:题目描述 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]
阅读全文
摘要:项目介绍 本项目主要实现一个LSM Tree引擎,并在其基础上实现以下内容: 对Redis RESP协议的兼容, 基于RESP协议的redis server封装 ACID事务 MVCC(多版本并发控制) WAL(Write-Ahead-Log) 崩溃恢复 学习该项目是为了提升代码能力,学习巩固数据库
阅读全文
浙公网安备 33010602011771号