自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (2)
  • 收藏
  • 关注

原创 动态规划 Dynamic programming

2、状态转移方程:每个物品都有不放入和放入这两个选择:如果放入物品则背包容量减少,如果不放入物品则背包容量不变。里的 ‘h’ 替换为 ‘r’(‘rorse’),再删除第二个 ‘r’ (‘rose’),最后删除 ‘e’(‘ros’)。,有四种方式凑成目标金额:{5}、{2, 2, 1} 、{2, 1, 1, 1} 和 {1,1,1,1,1}。为此,采用数组(称为 dp 数组)来存储各子问题的最优解,其每个元素对应一个子问题的最优解。的方法,从最小子问题的解开始,迭代地构建更大子问题的解,直至得到原问题的解。

2025-08-01 11:59:25 972

原创 搜索--二分查找

时,说明待判断的元素只剩下一个:若是目标值,则直接返回下标,若不是目标值,根据其与。,则上述的二分查找只能返回其中一个的索引,无法确定该元素的左边和右边还有多少。,每轮缩小一半搜索范围,直至找到目标元素或搜索区间为空为止。在这个过程中,区间大小会不断减少,知道遇到目标元素或者为空(时,说明还没有找到目标值,则跟上述一样,修改指针。并返回对应的下标,若数组不包含目标元素,就返回。,分别指向数组的首元素和尾元素,代表搜索区间。,它是基于分治策略的高效搜索算法,利用数据的。时,说明找到目标元素,可采用。

2025-07-25 14:53:48 875

原创 HJ6 质数因子

(2)质因数分解时,只需要试除小于等于。,这与上处的假设有矛盾,因此必有。),输出它的全部质因子,即。,那么它可以写成因子的乘积。的质数,如果全部试完后。

2025-06-28 09:44:12 224

原创 将真分数分解为埃及分数

(2.3)重复上述步骤,直到最终分子为 1,即可完成分解。(2)如果 b 不能被 a 整数,选择最小的单位分数。(恒等公式),可以加快运算速度,无需再递归下去;表示为若干个互不相同的埃及分数之和。是分子为 1 的分数,称为埃及分数。(1)如果 b 可以被 a 整数,即。,即当前能减去的最小分母的单位分数。(2.1)更新 a 和 b:由于。且 b 是偶数时,可以直接用。(2.2)特殊情况:当。

2025-06-19 23:22:01 932

原创 最长公共子串

给定两个字符串,输出它们的最长公共子串(Longest Common Substring, LCS)。其中,子串表示下标连续的字符子串,其可为空串。为结尾的公共子串的长度。因此,求解两个字符串的 LCS 简化为求解公共子串的长度。如果不匹配,则当前子串的长度为 0(因为子串必须连续)。(4)记录最大值:在遍历两个字符串的过程中,记录最大的。,这个相当于子串与空串进行匹配,结果为没有公共子串。越短,表的行数更少,空间占用更小;,用于截取第一个出现的最长的公共子串。),则公共子串的长度在原先的基础上。

2025-06-15 11:50:05 237

原创 数组中的逆序对--归并排序算法

逆序数是指在一个序列中,如果前面的元素大于后面的元素,则这两个元素构成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。③ 当某一侧数组遍历完,直接将另一侧剩余元素全部加入合并数组。1、分:将数组递归地分成左右两部分,直到子数组的长度为 1。,而从大到小或没有大小顺序视为。定义:元素从小到大的顺序视为。数组用来合并这两个数组;,此时没有出现逆序对,将。的时间内高效计算逆序。2、治(合并):合并两个。① 设两个有序子数组为。组成逆序对,其数量为。:利用归并排序可以在。

2025-06-05 13:40:13 169

原创 华为计试——刷题

思路:首先,判断这个 IP 地址和子网掩码格式是否正确,不正确输出 ‘1’,进而结束;子网掩码可以简单看成一串连续的 1 和一串连续的 0 拼接而成的 32 位二进制数,左边部分都是 1,右边部分都是 0。:遍历所有的砝码,记录当前砝码在不同数量下的重量,并与之前的所得到的重量相加并去重;接着,将 s 与现有的 res 集合逐元素相加并去重,得到新的 res 集合,即。,计算不同数量下不同的重量并存储到列表中,即 s =(2)遍历砝码,记当前砝码的重量为。的砝码,以及选择全部的砝码。的砝码,它们可以称出。

2025-05-31 21:57:54 1383

原创 四则运算+从单向链表中删除指定值的节点+名字的漂亮度+数独(Sudoku)

3、乘除的优先级大于加减,因此遇到加减运算符且前面有乘除的子表达式时,先将前面的表达式计算并将其结果作为加减表达式的左侧数字;),当遇到括号的右半边就执行括号里面的表达式,直到遇到括号的左半边。这种形式,因此在计算前提前将数字字符以一个整体存储/展示;含义:给定表达式字符串,输出这个表达式的结果。作为容器/数据结构,因为它有先进后出的特性;

2025-04-29 15:47:46 853

原创 计算字符串的编辑距离和单向链表中倒数第k个结点

只需要一次操作就可使得两个字符串一样,即要么第一个字符串删除字符。含义:给定两个字符串,将一个字符串转换成另一个字符串所需要的。单字符编辑操作(插入、删除、替换)次数。转换为空字符串 “” 需要 i 次删除。,要么第二个字符串增加字符。,其字符串的长度分别为。

2025-04-28 17:21:06 816

原创 5. 最长回文子串

只要判断第一个和最后一个字符是否一样;当子串的长度大于 3 时,例如。如果字符串向前和向后读都相同,那么子串为回文串,比如。,那么除了判断第一个和最后一个字符是否相等,还要判断。由此可以看出,单个字符是一个回文串;,返回一个最长的回文子串,其中。是由小写字母和数字组成的,且。是前后的两个索引/指针 ,且。的子串是否是回文串,其中。题目含义:给定一个字符串。时,表示一个单个字符;

2024-12-07 16:49:35 304

原创 224. 基本计算器

因此我们可以使用双栈来实现一个计算器,这两栈分别存储数字和运算符,分别记为。从前往后遍历,将数字字符和运算符字符分开处理。假设当前遍历到的元素是。题目含义:实现一个基本的计算器,计算一个字符串表达式。栈不为空,则我们把现有的元素继续计算;在这个表达式中除了括号外,运算符就只有。考虑完特殊情况,我们现在对表达式。当遍历完整个表达式,如果。这样的表达式是有效的。此外,我们需要额外考虑。

2024-11-23 12:41:45 290

原创 力扣 --反转链表

这样子我们可以通过这个关系顺利地将节点。的节点,其中头结点的索引为 1,难点:在反转的过程中,如何将节点。的单链表的头指针,反转范围为。

2024-11-08 17:11:22 665

原创 力扣 -- 滑动窗口

给定一定长度为k的窗口,从数组的的最左侧移动到到数组最右侧,每次移动一位,移动过程中纪录窗口中最大值。难点:移动的过程中,如何纪录窗口内的最大值。我们可以使用创建一个滑动窗口,在移动的过程中不断维护队列的单调性;此外在队列中我们纪录元素的下标而不是元素本身。若要保持窗口的大小为k的话,则当前下标i与队头数值j需要i−jk不等式成立。

2024-11-07 15:45:46 869

原创 前端:遇到的面试题

GET:用于数据请求,数据放在 URL 中,有长度限制,适合读取操作。POST:用于数据提交,数据在请求体中,无长度限制,适合更新操作。

2024-10-28 22:32:27 771

原创 js 的宏任务和微任务

事件循环不断检查任务队列,按照一定规则处理同步代码、宏任务和微任务,并决定何时执行它们。在 JavaScript 中,宏任务(macro-task)和微任务(micro-task)是任务队列(task queue)中两个不同的任务类型,它们是 JavaScript 异步编程机制的重要组成部分。中依次执行,执行完一个宏任务后,事件循环会检查是否有需要执行的微任务队列。③ 当前宏任务中的所有同步代码执行完毕后,会执行微任务队列中的所有微任务,直到队列为空;,加入宏任务队列,当前宏任务队列 [

2024-10-26 14:35:55 1497

原创 206. 反转链表

题目含义:将整个单链表反转,返回反转后的头结点。

2024-10-24 12:28:22 174

原创 1486. 数组异或操作

观察公式可以知道,这些元素的奇偶性质相同,因此它们的二进制表示中的最低位或者均为 1,或者均为 0。于是我们可以把参与运算的数的二进制位的最低位提取出来单独处理。当且仅当 start 为奇数,且 n 也为奇数时,结果的二进制位的最低位才为 1,我们将最低位用。此时,当我们把每个元素右移一位(除以 2),再将。我们可以根据异或运算的性质实现时间复杂度为。最后返回这个数组全部元素的异或结果。是偶数,所以化简结果为 1;构造一个数组,数组元素为。这样最后的结果即可表示为。对于本题,我们需要求解。

2024-10-14 20:15:19 988 1

原创 2275. 按位与结果大于零的最长组合

那么遍历数组,统计在第 k 位与 1 的按位与结果为 1 的元素个数,就可以得出这个组合的长度。而且我们还需要一个变量在遍历过程纪录最大的长度。当我们从二进制的位数出发,只要组合中第 k 位的所有元素按位与的结果为 1,那么这个组合就是大于 0 的。题目:给定 candidates 数组,计算数组的每种组合下 按位与 的结果,返回大于 0 的。是长度最长的且按位与的结果大于 0 的组合之一。其中对于二进制位的范围,题目给定的元素取值范围在。,因此我们只需要遍历 24 个二进制位即可。闭区间内,同时我们有。

2024-10-13 22:39:17 364

原创 260. 只出现一次的数字 III

位进行按位与操作,其结果为 1,表示为 type1;并且在遍历过程中对同一类对元素进行异或操作,根据上面的 2 个性质,最后的 type1 和 type2 就是。题目含义:有一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次,我们需要返回只出现一次的两个元素。,它的运算规则是在二进制表示,在同一位的数若是不同则为 1,否则为 0;这样就可以把 nums 中的所有元素分为两类,再次遍历数组:其中一类是元素与第。的解释,我们对数组的所有元素进行异或计算,得到。

2024-10-12 23:36:38 765

原创 2571. 将整数减少到零需要的最少操作数

(2) 判断最低位的 1 是连续的还是单个的:当最低位的 1 向左移动一位后与 n 进行 AND 操作的结果大于 1,则表示是连续的(111 & 10 = 010 > 0),否则为单个;如果最低位的 1 是连续的,则我们选择 +1,如果最低位的 1 是单个的,则我们选择 -1,来逐步向 2 的幂靠拢。n & (-n) 是用来提取数 n 的最低位的 1;① 定义变量 n,初始值为 1,因为当 n 是 2 的幂时,只需要一次操作;n & (n-1) = 0 表示 n 是 2 的幂。的最低位的 1,逐步将。

2024-10-10 13:02:21 542

原创 2401. 最长优雅子数组

这就意味着子数组的元素在二进制,从底到高位的第 i 位上,至多有一个元素的第 i 位比特是 1,其余元素在相同位上是比特 0,相当于这些元素同一位上不存在同时为 1 的情况;① 定义变量 ans、left 和 mask,分别表示最长优美子数组的长度、滑动窗口的左边界、以及记录当前窗口中所有数的按位或的结果;(1) 判断新加入的 nums[right] 和当前窗口中的某个数字有冲突(即 AND 不为 0):如果有冲突,则用异或。进行按位与 AND 运算的结果均为 0,且最短的优雅子数组的长度为 1。

2024-10-09 12:44:47 916

原创 2871. 将数组分割成最多数目的子数组

此外,从 nums 无论我们怎么取子数组,子数组的 AND 结果不会低于整个数组的 AND 结果。因为整个数组是考虑了全部的元素,每对一个新来的元素进行 AND 运算,只会减少。按位与 AND 运算的基本规则是:两个数的二进制表示的相应位都为 1 时,结果这一位才为 1,否则为 0;③ 当遍历结束后,如果 cnt == 0,返回 1,否则返回 cnt。因此,AND 运算随着参与的数越多,结果会逐渐减少为 0,比如。是否为 0,若是为 0,表示可以分割出一个子数组,更新。用来记录分割的子数组数量,

2024-10-08 12:10:27 814

原创 1310. 子数组异或查询

中在下标范围内 [left, right] 的异或结果。其中用到了异或运算的结合律,以及异或运算的性质。的时间内完成一个查询的计算。定义长度为 n+1 的数组。② 计算每个查询的结果,第。题目含义:对每个查询。① 求解前缀异或数组。

2024-10-08 00:38:21 781

原创 在 jupyter lab 中运行R语言

其中第一个输入回车后就有关于镜像源的选择,选择其中一个就好了,我选择的是标红的那个。其中官网链接:https://www.r-project.org/完成之后,重新启动 jupyter lab,就有 R 的图标了。安装完成后,你的电脑桌面就有相应的软件图片,打开是下面的形式。

2024-10-06 21:01:56 654

原创 位运算 -- 力扣

当 n = 4 时,start = 1,nums=[1, 3, 5, 7],最低位 e 为 0,原因:两个奇数进行异或操作结果为 0,因此偶数个奇数的最低位为 0;这个性质使得我们在处理长度为 4 的一组数时,不需要逐一计算它们的异或结果,而是直接知道它们的异或为 0,将问题的规模大幅缩小。观察公式可以知道,这些数的奇偶性相同,因此它们的二进制表示中的最低位要么均为 1,要么均为 0。为开头的连续四个整数异或的结果为 0” :连续四个整数的异或结果为 0,即为。为开头的连续四个整数异或的结果为 0,所以。

2024-10-03 21:22:23 860

原创 差分数组的练习

中,每一个元素实际上代表了一个区间内字符的位移情况,因此结果就可以从这些位移叠加得到答案。中,每一个预订记录实际上代表了一个区间的增量,因此结果就可以从这些增量叠加得到答案。注意本题中航班的编号从 1 到 n 的,因此我们需要相应的调整数组下标对应关系,对于预定记录。根据题意,需要返回一个数组,其中每个元素是当前航班的预定座位的个数。里的字符都进行移位运算,最终返回移位后最终字符串。差分数组的性质是,当我们希望对原数组的某一个区间。的影响,否则在从左到右累加 d 中的元素时。表示一段区间上的移位,即在。

2024-10-02 11:43:21 857

原创 快速排序 c++

并且此时只有 i 的位置是确定的,不会随着后续的快速排序而发生改变,所以可以根据此时的 i 索引得出 nums[i] 是第 k-1 小(从小到大排序)。:选取一个 pivot(哨兵),一般是待排序的数组的第一个元素,将数组分割成两部分,使得前面一部分小于等于 pivot,后面一部分大于等于 pivot;因为当 i 和 j 相遇时,说明已经遍历完所有的元素,此时所有的交换已经完成,此时再继续移动指针已经没有意义。若找到一个比 pivot 大的元素,记录此时不满足条件的下标 i;

2024-08-02 01:31:24 221

原创 力扣刷题 -- Pow(x, n)

与结果相乘,若为 0 则跳过次步),最后进行右移操作。总结:每次递归都会使得指数减少一半,因此递归的层数为。每当指数的最低位为 1 时,将当前的。的二进制最后一位是不是 1(若是 1,则当前的。根据题目,需要我们自己定义一个快速求幂的方法。,判断最后一位是否为 1:若结果为 1,则将。判断 n 的奇偶情况,若为奇数就多乘一个。,算法可以在很快的时间内得到结果。为奇数时,返回结果就多乘一个。,若为 0,则跳过这个步骤;,若为 0,则返回 1.0;为偶数时,就直接返回。,若为偶数,则直接返回。

2024-07-31 10:57:12 1021

原创 力扣刷题 -- 二分查找

二分查找也叫折半查找,比如在一个有序的数组里面找到目标值,它是一种查询效率比较高的算法,时间复杂度Olog2nOlog2​n。它的基本思想是将目标值与数组中间的元素进行比较,如果目标值小于中间元素,则在数组的左半部分继续查找,否则在右半部分查找,不断缩小搜索范围,直到找到目标值或确定目标值不存在为止。lower_bound() 方法用于在一个有序数组 nums 中找到第一个大于或等于target 的元素的位置。// 左闭右闭区间:待查找的区间 [left, right]

2024-07-30 14:28:56 478

原创 力扣刷题 -- BFS 与 DFS

(2) 利用队列 que,将入度为 0 的点,放到队列中 【当顶点的入度为 0 ,相当于对应的课程已经学习完了,若仍有些课程的入度不为 0,说明图中存在环,无法被选,完成不了所有课】;(3) 从队列中得到入度为 0 的顶点,假设将这个顶点去掉,则对应的被指向的顶点的入度应被减一;比如 {1:[3, 4]} 表明为顶点 1 同时指向 3 和 4,in[3] = 2 相当于顶点 3 的入度为 2;(2) 若存在一条从顶点A到顶点B的路径,那么在序列中顶点A出现在顶点 B 的前面。方式二:双向 BFS。

2024-07-24 15:19:08 1090

原创 力扣刷题 -- 队列和栈

因此我们使用了两个哈希表:一个用来存储元素出现次数的哈希表 map ,它的的键值对为 {element: frequency},一个是用来存储具有相同频率的元素的 frequencyMap ,它的键值对为 {frequency: elements of the same frequency}【将 frequency 作为 key 】;在 push 操作中,更新元素的频率并将当前元素加入对应频率的栈中。,每个栈都存储着相同频率的数字(这里的频率指的是数字入栈时的频率),且保持了。

2024-07-20 00:19:02 923

原创 力扣刷题 -- 树

尽管 vals 数组的元素不是有序的,但 左子树的区间的整体值 一定小于 右子树区间整体的值,因此我们可以在 [left+1, right] 区间内使用二分法查找第一个大于根节点值的位置,从而确定右子树的起始位置;:使用递归完成二叉树的构建,在递归函数内需要确定右边界的开始索引,因此可以从根节点的开始往后遍历,找到第一个比它大的元素。举例【前序遍历 + BST】:[2,1,3],[5, 3, 1, 4, 7],[5, 2, 1, 3, 7, 6, 9, 8, 10]。当队列不为空时,取出队列中的节点;

2024-07-09 12:21:03 1175

原创 416. 分割等和子集 和 0-1 背包

dp[i][j] 定义为前。

2024-06-16 00:42:53 972

原创 72.编辑距离

dp[i][j] 表明word1的前 i 个字符转化为word2的前 j 个字符的编辑距离(最少操作次数)。注意:字符串的前 i 或 j 个字符表示取长度为 i 或 j 的大小的子字符串,对应到子字符串中为 [0:: i-1] 或 [0:: j-1] 的区间。

2024-06-14 21:50:01 652

原创 PCA 主成分分析

PCA 主成分分析

2024-06-07 15:52:47 631

原创 论文 GMC: Graph-based Multi-view Clustering

阅读 GMC 文章有感

2024-06-05 14:04:30 895 4

原创 解决报错问题 “index_select_out_cuda_impl“ not implemented for ‘float‘

使用 stanfordnlp 报错 “index_select_out_cuda_impl” not implemented for ‘float’ "。

2024-04-23 20:12:49 776

原创 机器学习-实战:泰坦尼卡号幸存者的预测

编写的软件:jupyter lab编程语言:pythonB站菜菜sklearn机器学习

2022-06-29 08:24:42 445

原创 win10 安装下载jupyter lab

在win10环境下,安装jupyhter-lab

2022-06-28 09:22:21 5312 1

reset.css文件.zip

在前端开发,写代码的时候需要清除元素默认的样式,这个文件就排上用场了。直接使用这个,比起使用通配符*,效果更加。

2020-03-01

W3School离线手册(2017.03.11版).zip

W3School离线手册并没有超脱新的版本很多,还很实用。内存不大,内容涉及到HTML/CSS,JAVAScript,Sever Side, ASP.ENT, XML, Web Service, Web Building

2020-02-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除