自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python入门——对象方法

对象方法是定义在类中的函数,它们的第一个参数通常是self,表示对当前对象的引用。通过self,方法可以访问和修改对象的属性。class Dog:在这个例子中,Dog类有一个构造方法__init__和一个对象方法bark。__init__方法用于初始化对象的属性,而bark方法用于返回狗叫的声音。对象方法是Python中面向对象编程的重要组成部分。它们允许你将数据和操作封装在一起,从而创建更模块化和可维护的代码。通过定义和调用对象方法,你可以操作对象的属性,并实现各种功能。

2025-01-24 01:02:38 278

原创 python入门——bool类型与逻辑运算符

在Python中,bool 是一个内置的数据类型,用于表示布尔值,即 True 或 False。布尔值通常用于条件判断和逻辑运算。以下是 bool 类型的详细语法和用法: 基本语法 bool 类型的变量可以通过直接赋值 True 或 False 来创建,也可以通过将其他数据类型转换为布尔值来创建。直接赋值:类型转换 Python 中的许多数据类型都可以隐式或显式地转换为布尔值。以下是一些常见的转换规则: • 数值类型:0、0.0、0j(复数)被视为 False,其他数值被视为 True。

2025-01-24 00:46:13 751

原创 python入门

Python是一种高级编程语言,以其简洁易读的语法而闻名。

2025-01-23 18:55:02 717

原创 #指针入门

-地址是内存的编号,每个字节都有;--内存单元的编号(内存单元的第一个字节的地址就是这块内存单元的首地址);

2024-12-29 16:03:53 374

原创 贪心的搭子--优先队列

2指定容器构造 例如用vector构造一个最大优先队列 priority_queue<int,vector<int>1默认构造,使用无参构造函数创建一个空的优先队列 如priority_queue<int> pq;定义优先队列,使用priority_queue类定义一个优先队列对象(默认大堆)优先队列简单理解就是存在某种优先级的队列,于是与贪心的最原则天生一对!pop():移除优先队列最高优先级的元素。top():返回优先队列中最高优先级元素。size():返回优先队列的元素个数。1.优先队列的分类c。

2024-11-10 21:16:58 414

原创 贪心算法的常见前提操作:排序!

sort(首地址,尾地址+1,[cmp函数])3)第二个参数是区间尾地址的下一地址。2)对于数组,数组名即可代表首地址。上述实现了对结构体优先按a升序,然后按b降序。4)第三个参数不写,则默认为升序。以上实现了将数组从大到小排列。1)可以传两到三个参数。

2024-11-09 16:31:06 368

原创 算法学习Day1--贪心算法

这题的贪心法则不是很好想,在考虑这个问题时,一般会有这样一些想法,优先选择时间跨度最小的,以及优先选择开始时间最早的等等。其中正确的是优先选择结束时间最早的。可以用反证法简单证明,至少存在最长的时间序列包括结束时间最早的事件。贪心:即将大问题拆成一个个子问题,且每次解决子问题时遵循相同的“最”原则。同样的性价比:当发现无论如何都赢不了国王最好的马时,选择输掉最次的马。在满足可以比例交换的前提下,每次优先交换性价比最高的。

2024-11-09 12:32:07 259

原创 【无标题】

明显地,在对八个方向进行筛查时没有考虑到j+1,i+1,j-1,i-1的越界问题。扫雷,也就是对“o”八个方向进行遍历筛选。

2024-11-06 14:20:38 269

原创 代码随想录Day12

写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。

2024-10-31 13:03:18 199

原创 代码随想录Day11

在理解逆波兰表达式后,用栈去解决并不困难。下一道是滑动窗口,难!简单理解一下思路,等二战。

2024-10-27 09:32:07 250

原创 代码随想录Day10

用队列实现栈,这里我们定义了两个队列,一个辅助输入一个负责输出,当然第二个队列就像第一个的影子,下面介绍如何用一个队列实现————将队列头部元素从新添加到尾部即可。简单而有意思的一题,简单说,在读“(”“{”“[“时 我们实际上是在向队列中压入”)“”}“”]“,随后反向按一定顺序将在读取”)“”}“”]“元素弹出,注意这里的顺序!最后检查队列是否为空。当然,我们也可以直接将字符串直接作为栈。整体上与上一题很像。

2024-10-27 00:03:28 355

原创 代码随想录Day9

综上所述,void reverse(string& s, int start, int end)中使用引用传递(&)是为了避免不必要的复制、允许修改原始数据、提高效率以及增强代码的可读性。如果s是通过值传递的(即不使用&),那么每次调用reverse函数时,都会复制整个字符串s。对于大型字符串,这会导致显著的性能下降,因为复制操作需要时间和内存。函数的目的是反转字符串s中从start到end的子串。如果s是通过值传递的,那么任何对s的修改都只会影响副本,而不是原始字符串。那为什么函数声明时选用&s呢。

2024-10-25 13:19:27 457

原创 代码随想录Day8

i += (2 * k))”十分巧妙!是空的),这会导致在第一个字符串处理时立即出现越界错误。非常基础的一道题,但以下的for循环的写法非常有借鉴价值!point2:从后往前进行以减少数组元素后挪带来复杂度;point3:在对的位置填入对应的字符;point1:对数组进行扩充;:在读取第一个字符串之前,再来看看原先错误的代码。

2024-10-24 20:11:00 300

原创 代码随想录打卡Day

首先对A,B数组进行遍历,for循环镶套,得出两数之和并记录在umap中,同时用count来记录两数之和出现的次数;随后对C,D数组进行遍历,找出两数之和的同时,在uma。中查询是否存在值与该和相加等于0;方法:依旧是双指针(记得先进行数组的排序!) ,滑动窗口yyds。对于哈希表来说,该题的去重太过麻烦,于是我们用双指针来破冰。很容易超出限制的一道题。

2024-10-23 19:09:35 463

原创 一道不是很难,但也不好写的题

使用快慢指针(也称为龟兔赛跑算法)来解决这个问题实际上并不直接适用,因为快慢指针通常用于检测链表中的环或者找到链表的中间节点。然而,对于这个问题——找出字符串中最长连续相同字符的长度——我们可以稍微调整思路,利用类似快慢指针的遍历方式来简化代码,尽管这并不是快慢指针的传统用法。不过,我们可以模拟一个“指针”的概念,通过遍历字符串并使用两个变量(可以看作是“指针”的抽象)来跟踪当前字符和连续相同字符的长度。可以用于感觉到,里面有点双指针的影子。

2024-10-22 23:09:04 315

原创 代码随想录打卡Day6

再来看一下map ,在map 是一个key value 的数据结构,map中,对key是有限制,对value没有限制的,因为key的存储方式使用红黑树实现的。此时就要选择另一种数据结构:map ,map是一种key value的存储结构,可以用key保存数值,用value再保存数值所在的下标。本题呢,我就需要一个集合来存放我们遍历过的元素,然后在遍历数组的时候去询问这个集合,某元素是否遍历过,也就是 是否出现在这个集合。因为本题,我们不仅要知道元素有没有遍历过,还要知道这个元素对应的下标,

2024-10-22 12:54:18 506

原创 代码随想录打卡Day4

设置快慢指针并将初始位置设置在dummyhead,while循环让快指针先向后跑N个节点。删的是节点,即slow在运行结束是作为指针要指向该节点,因此,while循环结束后要让fast继续向后跑一个节点,从而让slow在要删除的节点前一个节点停下。定义一组快慢指针,fast每次跑两个款i额点,slow每次跑一个节点;方法上来说,还是用了虚拟头节点,过程会有点绕,画图切不可少。处理“倒数第N个”, 这种差可以用快慢指针实现。找交点,注意不是数值相等,而是指针相同。只要定义一组指针就能解决。

2024-10-21 13:47:34 283

原创 while(index--)&while(--index)

在C++(以及C、Java等类似的语言)中,while(index--) 和 while(--index) 虽然在表面上看起来相似,但它们在循环执行和条件判断方面有着显著的不同。结果:这种循环通常用于从某个非零值开始,向下遍历到0(但不包括0,因为当index变为0时,条件判断为假,循环结束)。第一次迭代:index递减为2(条件为真),进入循环体,执行时使用的是已经递减为2的index。第二次迭代:index递减为1(条件为真),进入循环体,执行时使用的是已经递减为1的index。

2024-10-19 11:36:26 369

原创 代码随想录打卡Day3

并与结构体有很大关系,链表的节点一般都是结构体,其中包含了该节点的数据部分以及指向下一节点的指针。通过这种方式,链表将结构体与指针连接起来,从而构建一个强大的数据结构,可以同时实现数据的组织和动态管理。通过指针链接的线性数据结构。链表由两部分组成,一为数据域,一为指针域。简单明了,将头节点设为NULL(即为空),不能忘了delete!该题涵盖了链表的所有基本操作,把操作填进对应的函数就行。3)单链表含至少两个节点,删除非头节点。2)单链表含至少两个节点,删除头节点。1)单链表仅含一个节点,删除头节点。

2024-10-19 08:57:41 424

原创 代码随想录打卡Day2

首先声明,题很简单,但如果把时间复杂度给限制死,不太容易想到。但中心位置需要另外考虑(也就是if的选择结构)不涉及算法,但非常考验对多过程的细节把控。感觉上,很像dfs与记忆化搜索的区别优化。平时没有注意复杂度计算的很难注意到。法二 双指针(快慢指针/滑动窗口)两个for循环嵌套,蠢蠢的枚举!这张图很好地把拐角处理成了换边。

2024-10-18 19:30:44 652 1

空空如也

空空如也

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

TA关注的人

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