自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 代码随想录第34天: 贪心part03

【代码】代码随想录第34天: 贪心part03。

2024-04-25 02:59:42 243

原创 代码随想录第32天: 贪心part02

【代码】代码随想录第32天: 贪心part02。

2024-04-21 21:13:19 112

原创 代码随想录第31天: 贪心part01

【代码】代码随想录第31天: 贪心part01。

2024-04-21 17:38:22 80

原创 代码随想录第30天: 回溯总结

排列问题:N个数按一定规则全排列,有几种排列方式。子集问题:一个N个数的集合里有多少符合条件的子集。组合问题:N个数里面按一定规则找出k个数的集合。切割问题:一个字符串按一定规则有几种切割方式。棋盘问题:N皇后,解数独等等。

2024-04-21 15:29:12 61

原创 代码随想录第29天: 回溯part05

【代码】代码随想录第29天: 回溯part05。

2024-04-18 20:31:19 107

原创 代码随想录第28天: 回溯part04

【代码】代码随想录第28天: 回溯part04。

2024-04-18 02:03:46 74

原创 代码随想录第27天: 回溯part03

【代码】代码随想录第27天: 回溯part03。

2024-04-16 03:49:45 74

原创 代码随想录第25天: 回溯part02

【代码】代码随想录第24天: 回溯part02。

2024-04-14 23:49:38 73

原创 代码随想录第24天: 初识回溯

【代码】代码随想录第24天: 初识回溯。

2024-04-13 21:43:13 95

原创 代码随想录第23天: 二叉树完结

【代码】代码随想录第23天: 二叉树完结。

2024-04-12 22:49:03 78

原创 代码随想录第22天:二叉树part08

【代码】代码随想录第22天:二叉树part08。

2024-04-11 21:37:08 86

原创 代码随想录第21天: 二叉树part07

【代码】代码随想录第21天: 二叉树part07。

2024-04-10 03:19:04 160

原创 代码随想录第二十天: 二叉树part06

【代码】代码随想录第二十天: 二叉树part06。

2024-04-09 02:38:29 202

原创 代码随想录第18天: 二叉树part05

【代码】代码随想录第18天: 二叉树part05。

2024-04-07 21:50:27 196

原创 关于递归和回溯的思考

两种方式都是在尝试找到一条从当前节点到叶子节点的路径,使得路径上节点值的总和等于给定的目标和。换句话说,每一层递归都有自己的变量环境,这些变量环境是相互独立的,所以不需要显式地进行回溯操作来恢复之前的状态。这种需要显式回溯的方式给状态管理带来了额外的复杂性,但它也提供了更大的灵活性,因为它允许你在同一层递归中多次修改和恢复状态。,这个值在这个新的调用栈中是固定的,不会因为其他递归调用的结果而改变。第二种方式中不需要回溯,因为它在每次递归调用时都传递了一个新的目标和,而不是直接修改原有的目标和。

2024-04-07 21:29:33 388

原创 代码随想录第17天: 二叉树part04

【代码】代码随想录第17天: 二叉树part04。

2024-04-06 21:51:40 78

原创 代码随想录第十六天: 二叉树part03

【代码】代码随想录第十六天: 二叉树part03。

2024-04-05 03:03:03 302

原创 代码随想录第15天: 二叉树part02

【代码】代码随想录第15天: 二叉树part02。

2024-04-04 20:52:46 92

原创 代码随想录第14天: 二叉树的前中后序遍历

【代码】代码随想录第14天: 二叉树的前中后序遍历。

2024-04-02 20:55:50 81

原创 代码随想录第13天: 单调队列和小顶堆

给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。输入: nums = [1,1,1,2,2,3], k = 2。给定一个非空的整数数组,返回其中出现频率前 k 高的元素。输入: nums = [1], k = 1。返回滑动窗口中的最大值。, n 是数组的大小。

2024-04-01 23:15:41 277

原创 代码随想录第11天: 栈的应用

例如:4 + 13 / 5,这就是中缀表达式,计算机从左到右去扫描的话,扫到13,还要判断13后面是什么运算符,还要比较一下优先级,然后13还和后面的5做运算,做完运算之后,还要向前回退到 4 的位置,继续做加法,你说麻不麻烦!所以就是用栈来存放,那么栈的目的,就是存放遍历过的元素,当遍历当前的这个元素的时候,去栈里看一下我们是不是遍历过相同数值的相邻元素。每个运算对象可以是整数,也可以是另一个逆波兰表达式。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。

2024-03-31 19:55:40 1166

原创 代码随想录第10天:栈和队列基础操作

接口定义的方法之一,用于将指定的元素插入到队列中(如果可以立即这样做而不违反容量限制),如果队列已满,则返回。但是依然还是要用两个队列来模拟栈,只不过没有输入和输出的关系,而是另一个队列完全用来备份的!的同学可能依然想着用一个输入队列,一个输出队列,就可以模拟栈的功能,仔细想一下还真不行!所以用栈实现队列, 和用队列实现栈的思路还是不一样的,这取决于这两个数据结构的性质。它用于检索并删除队列的头部元素,如果队列为空,则返回。使用栈来模式队列的行为,如果仅仅用一个栈,是一定不行的,所以需要两个栈。

2024-03-29 14:33:29 987 1

原创 代码随想录第九天: 字符串完结

这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。示例 2: 输入: haystack = “aaaaa”, needle = “bba” 输出: -1。示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2。

2024-03-29 12:25:16 466 1

原创 代码随想录第八天: 字符串的基本操作

给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。一些同学会使用split库函数,分隔单词,然后定义一个新的string字符串,最后再把单词倒序相加,那么这道题题目就是一道水题了,失去了它的意义。想一下,我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。因为字符串也是一种数组,所以元素在内存中是连续分布,这就决定了反转链表和反转字符串方式上还是有所差异的。

2024-03-27 23:30:17 963 1

原创 代码随想录第七天: 哈希表Part02

四数之和的双指针解法是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[left] + nums[right] == target的情况,三数之和的时间复杂度是O(n。这么写就是当前使用 nums[i],我们判断前一位是不是一样的元素,在看 {-1, -1 ,2} 这组数据,当遍历到 第一个 -1 的时候,只要前一位没有-1,那么 {-1, -1 ,2} 这组数据一样可以收录到 结果集里。

2024-03-27 05:11:01 887 1

原创 代码随想录第六天: 哈希表(数组+HashSet+HashMap)

为什么会想到用哈希表哈希表为什么用map本题map是用来存什么的map中的key和value用来存什么的把这四点想清楚了,本题才算是理解透彻了。很多录友把这道题目 通过了,但都没想清楚map是用来做什么的,以至于对代码的理解其实是 一知半解的。// 注意Map的创建方法i++) {// 注意Map中如何查找key是否存在res[1] = i;// 注意Map如何通过key查找valuebreak;// 注意Map如何添加元素return res;

2024-03-25 20:25:25 1281 1

原创 代码随想录第四天 链表Part02

双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。此时我们就可以比较curA和curB是否相同,如果不相同,同时向后移动curA和curB,如果遇到curA == curB,则找到交点。我们求出两个链表的长度,并求出两个链表长度的差值,然后让curA移动到,和curB 末尾对齐的位置。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

2024-03-23 15:00:13 824

原创 代码随想录第三天: 链表(虚拟头节点+基本操作实现)

/ 结点的值int val;// 下一个结点// 节点的构造函数(无参)// 节点的构造函数(有一个参数)// 节点的构造函数(有两个参数)

2024-03-22 13:51:19 742 1

原创 代码随想录第二天-滑动窗口+相向双指针+模拟

这里一圈下来,我们要画每四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开,或者左开右闭的原则,这样这一圈才能按照统一的规则画下来。在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。可以发现这里的边界条件非常多,在一个循环中,如此多的边界条件,如果不按照固定规则来遍历,那就是。窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。数组其实是有序的, 只不过负数平方之后可能成为最大数了。

2024-03-21 15:55:39 784 1

原创 代码随想录第一天-双指针+二分法

我们定义 target 是在一个在左闭右闭的区间里,也就是[left, right] (这个很重要非常重要)。区间的定义这就决定了二分法的代码应该如何写,while (left

2024-03-20 14:53:10 1049 1

原创 医者AI面试问题

对齐(Alignment),是指大语言模型(LLM)与人类意图的一致性。换言之,就是让LLM生成的结果更加符合人类的预期,包括遵循人类的指令,理解人类的意图,进而能产生有帮助的回答等。对齐是决定LLM能否在实际场景中得到真正应用的关键因素。因此,评估模型的对齐水平显得至关重要 —— 如果没有评估,我们就无法判断模型的优劣。

2024-02-05 14:25:25 704 1

原创 C++算法基础:二分查找模板

1.先用寻找左边界的二分查找模板找到满足a[mid] >= x 的左边界i。2.再用寻找右边界的二分查找模板找到满足a[mid] <= x 的右边界j。例子:求一个升序排列数组a中值为x的起始坐标和终止坐标。3.(i, j)即为所求结果。

2024-02-02 16:26:41 210

原创 Momenta面试问题:python比C++慢,如何缓解python的慢速问题

在Python中,一些数据结构和算法的实现可能不如C++中的高效。选择合适的数据结构和算法,以及了解Python中内置数据结构的性能特性,可以提高程序的执行效率。对于科学计算和数据处理,使用NumPy和pandas等库可以获得更高的性能,因为它们是用C语言编写的,底层实现是高效的。尽管有这些方法可以提高Python的性能,但在选择优化方法时,务必首先通过性能分析确定性能瓶颈,以便有针对性地进行优化。一些工具,如PyPy,提供了即时编译器,可以在一定程度上提高Python的执行速度。

2024-02-01 15:15:04 137 1

原创 Momenta面试问题:python如何实现多线程

这意味着在多线程的情况下,真正的并行执行是有限的,因为只有一个线程能够执行Python字节码。因此,对于CPU密集型任务,多线程可能不会获得很大的性能提升,但对于IO密集型任务,多线程仍然可以提高效率。多线程是一种并发执行的编程技术,它允许程序同时执行多个线程(线程是程序中的执行单元)。每个线程都是独立的,有自己的执行路径和状态,但是它们共享相同的内存空间,这使得线程之间能够更容易地进行通信和数据共享。多个线程之间可能会访问共享的资源,因此需要进行同步,以避免数据竞争和不一致的结果。)等,来帮助线程同步。

2024-02-01 15:09:55 136 1

原创 ML: F1score与Macro-F1 score

F1值是一种用于评估二分类模型性能的指标,结合了模型的精确度(Precision)和召回率(Recall)。F1值是这两个指标的调和平均数。PrecisionTPFPTP​RecallTPFNTP​F12⋅PrecisionRecallPrecision⋅Recall​F1值对于那些需要平衡精确度和召回率的任务非常有用,例如医学诊断、垃圾邮件检测等。

2024-02-01 13:17:43 837 1

原创 NLP:生成式模型Decoder, 选择式模型Decoder和选择-生成式模型Decoder

生成式模型 Decoder、选择式模型 Decoder 和选择-生成式模型 Decoder 是与神经网络中序列生成任务相关的三种不同类型的解码器。这些解码器通常与编码器(Encoder)一起构成序列到序列(seq2seq)模型,用于处理自然语言处理任务,如机器翻译、文本摘要等。总体而言,生成式、选择式和选择-生成式模型 Decoder 在序列到序列任务中有不同的应用场景。选择-生成式模型的引入主要是为了提高模型的性能,使其能够更好地处理输入序列的信息,并生成更准确、连贯的输出序列。

2024-02-01 11:34:07 230 1

原创 C++算法基础:快速排序模板

取j作为分界,则初始化时x不能取r。取i作为分界,则初始化x不能取l。

2024-02-01 00:16:13 236 1

原创 C++语法基础:printf输出string

注意不能直接填写s而要加上.c_str()后缀。

2024-01-31 22:52:41 442

原创 C++语法基础:重载运算符

在结构体Data之间比较大小的时候,通过结构体中的元素x来确定两个结构体谁大谁小。

2024-01-31 22:44:40 66

原创 C++语法基础:位运算

解释:将n右移i位后与1取and。#求整数n的二进制表示的第i位。

2024-01-31 22:25:24 71

空空如也

空空如也

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

TA关注的人

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