自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 更弱智的算法学习 day12

第六章。

2025-12-15 23:40:19 680

原创 更弱智的算法学习 day11

摘要:本文讨论了三个算法问题的解法要点。1. 逆波兰表达式求值:使用栈结构处理运算符,注意除法向0取整的特殊处理;2. 滑动窗口最大值:利用双端队列维护当前窗口最大值,通过比较新元素与队尾元素优化队列;3. 前K个高频元素:先用字典统计频率,再使用最小堆获取前K个高频元素。每个问题都分析了核心思路和实现细节,并提供了Python代码示例。其中特别强调了数据结构选择(栈、双端队列、堆)对算法效率的关键影响,以及Python中相关数据结构的正确使用方法。

2025-12-13 23:17:58 843

原创 更弱智的算法学习day 10

本文介绍了Python中栈和队列的实现与应用。通过列表和collections.deque实现基本操作,重点解析了四个典型问题:1)用双栈模拟队列操作;2)用队列实现栈功能;3)利用栈验证括号匹配;4)使用栈删除相邻重复字符。每种实现都详细说明了核心思路和边界条件处理,如双栈转换顺序、队列循环移位、括号对称匹配等。文章强调在Python中更应关注数据结构的思想应用而非具体实现,通过典型例题展示了栈"后进先出"和队列"先进先出"特性的灵活运用,为算法问题提供了清晰的解决

2025-12-12 22:30:03 440

原创 更弱智的算法学习 day9

本文总结了字符串相关算法题的解题思路,重点分析了翻转字符串单词、实现strStr()和重复子字符串检测三类问题。在翻转字符串单词中,提出双指针法和利用split()的简化方案;strStr()问题展示了Python切片的高效实现;重复子字符串检测则给出巧妙的字符串拼接解法。文章还提及右旋字符串的Python简洁实现,并指出KMP算法有待后续补充。这些解法充分利用了Python字符串处理的特性,展示了算法与语言特性结合的高效实践。

2025-12-11 23:33:50 328

原创 更弱智的算法学习 day8

本文总结了Python字符串的基本操作与相关算法题解。字符串操作包括索引切片(正负索引)、连接(+)、重复(*)、转义处理(r前缀)等特性。重点解析了三道题目:344题使用双指针原地反转字符数组;541题每隔2k字符反转前k个字符,运用了列表切片和join()方法;54题将数字替换为"number",展示了两种解法(直接拼接和双指针填充)。文章还对比了reverse()与reversed()的区别,以及字符串不可变性的注意事项。通过实例代码演示了字符串处理的常见模式,强调Python字符

2025-12-10 10:45:12 943

原创 更弱智的算法学习 day7

本文总结了哈希表相关算法题解及核心概念。454题采用分组哈希法,将四数和转为两两组合查找;383题使用数组统计字符频率;15和18题通过排序+双指针解决三/四数和问题,重点处理重复元素。哈希表核心在于键值映射,Python中dict和set基于哈希实现,具有O(1)查询特性。关键点包括哈希函数设计、冲突处理(开放寻址/链地址法)、负载因子控制及动态扩容。典型应用场景包括数据去重、频率统计、缓存实现等。选择数据结构时,键值映射用dict,唯一元素用set,小规模连续数据可考虑列表。

2025-12-09 15:34:52 712

原创 更弱智的算法学习 day6

本文摘要:文章系统介绍了哈希表理论基础及其应用。首先阐述了哈希表的基本原理、哈希函数和碰撞解决方法(拉链法和线性探测法)。随后通过四个LeetCode题目展示了哈希表的实际应用:242题使用数组/字典判断字母异位词,349题利用集合求数组交集,202题用集合检测快乐数循环,1题通过字典实现两数之和。重点讲解了Python中的哈希表实现技巧,包括Counter工具、字典操作和enumerate函数等,为算法问题提供了高效的哈希表解决方案。

2025-12-08 16:42:41 783

原创 更弱智的算法学习 day4

本文总结了链表相关的四个经典算法题:两两交换节点、删除倒数第N个节点、链表相交和环形链表检测。对于两两交换节点,关键在于处理指针顺序防止空指针;删除倒数节点使用快慢指针技巧;链表相交问题通过计算长度差或双指针法解决;环形链表检测则介绍了哈希表和快慢指针两种方法,其中快慢指针法需要理解数学推导。链表问题虽然思路清晰,但指针操作细节复杂容易出错,建议通过画图辅助理解。

2025-12-06 19:40:24 302

原创 更弱智的算法学习 day3

本文摘要: 本文介绍了链表相关算法题目的解题思路和代码实现。主要包括三个题目:203.移除链表元素(使用虚拟头节点方法简化操作)、707.设计链表(实现链表基本操作如增删查改)和206.反转链表(双指针法和递归法)。重点讲解了如何通过虚拟节点简化链表操作,以及反转链表时的指针处理技巧。

2025-12-05 21:22:43 413

原创 更弱智的算法学习 day2

本文总结了四个算法问题的解决方案:1. 209题"长度最小的子数组"提供了暴力解法和滑动窗口优化方法;2. 59题"螺旋矩阵II"展示了两种生成螺旋矩阵的方法,包括边界收缩法和圈层填充法;3. "区间和"问题介绍了前缀和数组的预处理方法;4. "开发商购买土地"问题通过行列前缀和优化了二维区域的划分计算。这些解法都体现了将问题分解、预处理和边界处理的编程思想,其中滑动窗口、螺旋矩阵边界控制和前缀和数组是核心技巧。

2025-12-04 17:27:46 464

原创 比较弱智的python基础补充——链表篇

本文介绍了一个Python实现的单向链表操作程序,包含构建、插入和删除功能。

2025-12-03 23:54:25 271

原创 更弱智的算法学习 day1

本文总结了数组相关算法题的解题思路。二分查找部分分析了闭区间和开区间两种写法,重点比较了边界条件的处理差异。移除元素问题探讨了暴力法和双指针法(快慢指针、对撞指针)的不同实现,强调指针移动逻辑。有序数组平方问题提出先平方后排序的暴力解法,并优化为利用双指针从两端向中间比较的新数组填充策略。

2025-12-03 17:52:31 786

原创 副露のMagic的弱智算法学习 day7​

总体来说比较简明易懂,但是也没那么好想到感觉,想到了也不一定写的对= =

2023-11-30 22:05:54 980

原创 副露のMagic的弱智算法学习 day6

总之哈希这里就学的晕乎乎的,中间短暂的清晰了一下,但是由于隔得时间一长又忘光了= =权且放在这里,等回头在看的时候提升一下。

2023-11-30 15:38:50 123

原创 副露のMagic的弱智算法学习 day5

总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!我总结一下,看完之后好像知道hash表是什么了,除此之外好像什么都不知道。现在不仅对set、map不太懂,它的语法也没有一点掌握。感觉现在理解就是hash表就是一种思想?)然后底层的实现可以依赖数组啊、集合set啊、映射map。

2023-11-21 16:46:23 164

原创 副露のMagic的弱智算法学习 day4

今日主要内容:链表基础(两两交换链表中的节点、删除链表的倒数第N个节点、面试题 02.07. 链表相交、环形链表II、总结)1、简单复习昨天使用的双指针法based on C++ 学习依据代码随想录:)给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]愚蠢的尝试(该部分都是杂乱想法,不一定正确) 使用三个指针(也许是所谓的双指针法)

2023-11-16 17:32:03 120 1

原创 副露のMagic的弱智算法学习 day3

struct Listnode{ //新建一个构造元素int val;//节点存储的元素//指向下一个元素的指针//int x表示定义一个接受整数参数x的名称为ListNode的构造函数//:表示初始化列表开始,val(x)表示链表数据域的值被初始化为传递的参数 x//next(null)则表示指针被初始化为null,表示没有下一个节点。不定义构造函数也可以,C++默认生成一个构造函数。

2023-11-15 21:43:30 231

原创 C++语言基础学习13

3. 在 main 函数中,创建一个包含一组整数数据的链表,然后调用链表的输出方法将所有元素打印出来。复活,正好算法方面也学习到这,尝试手写一下:先贴个成熟代码在这,等我回来看看我写的答辩。2. 提供一个 linkedList 类来管理链表,包含构建链表和输出链表元素的方法。构建一个单向链表,链表中包含一组整数数据。输出链表中的所有元素。按照顺序打印出链表中的元素,用空格隔开,最后一个元素后没有空格。每组的第一行包含一个整数 n,表示需要构建的链表的长度。接下来一行包含 n 个整数,表示链表中的元素。

2023-11-15 14:15:38 85

原创 副露のMagic的弱智算法学习 day2

在面试中,数组是必考的基础数据结构。其实数组的题目在思想上一般比较简单的,但是如果想高效,并不容易。之前一共讲解了四道经典数组题目,每一道题目都代表一个类型,一种思想。

2023-11-14 21:54:41 142 1

原创 副露のMagic的弱智算法学习 day1

感觉学习这一部分一方面要能想到这种做法,另一方面就是要掌握基本的语法,这样做起来可能会快很多。今天在输出那里其实有很多问题:我想着在最后cout或者return一个数组,这肯定是不对的,那为什么能输出数组,前面也说到了:输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。//nums是以“引用”方式传递的。也就是说,不对实参作任何拷贝// 在函数里修改输入数组对于调用者是可见的。//根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。

2023-11-13 21:51:50 156 1

原创 C++基础知识学习12

首先读取n确定有几个字符串要获取,建立string来收纳内容,然后获取每个字符串(好像cin或者getline都可以),然后进行遍历,根据下标,设计一个空字符串a,进行s【奇数】,s【偶数】的交换。结果一下就对了,乐。以下是使用函数的方法,注意在使用函数时,要修改传入参数的情况下要使用&符号。输入的第一行是一个整数n,表示有测试数据。给定一个长度为偶数位的字符串,请编程实现字符串的奇偶位互换。接下来是n组测试数据,保证串长为偶数位(串长

2023-11-10 23:12:32 142 1

原创 C++基础知识学习11

如果后面还需要将小写字符转换成大写,那我们还需要再写一次,代码就会显得有些冗余,更致命的是,如果这是一段很长的代码,并且在多个地方应用,当我们有了新的需求,需要对这一段代码进行修改时,我们需要一处处的找出再修改,这种情况下我们可以使用第一节中提到的函数,将代码模块化,并在合适的地方重用,从而增加代码的复用性和可维护性。代码结果如下,注意result每一次依然要制空。a -= 32;return a;int n;cin >> n;getchar();//吸收一个回车符号。

2023-11-10 15:35:48 220 1

原创 C++语言基础学习10

每组输出结果占一行。如果输入的大写字母都在集合{A,B,C,D,F}中,则输出对应的平均绩点,结果保留两位小数。否则,输出“Unknown”。每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。设置 string字符串,按行收纳字母,后读取判断,获得相应的分数并加入到sum中,除以string长度来获得最终均分。每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔。

2023-11-09 21:50:22 118 1

原创 C++语言基础学习9

程序应该接受用户输入的正整数作为正方形的边长,并打印相应大小的正方形框。请注意,内部为空白,外部是由 "*" 字符组成的框。二维数组,它是由行和列组成的表格状数据结构,可以理解为包含其他数组的数组,二维数组的元素可以通过两个索引来访问,一个索引表示行,另一个表示列, 比如。由于是二维的,显然这个时候想要直接通过一层for循环来实现遍历是不太现实的,这就需要使用到前言中所讲的。接受边长n,先打印n个星号,然后换行,在第1和第n个位置打星号,如此重复n-2次,最后打印n个星号。表示第一行第一列的元素,值为1,

2023-11-09 21:09:10 108 1

原创 C++语言基础学习8

改进博客手法尝试。

2023-11-09 20:43:10 139 1

原创 C++语言基础学习7和学习反思

一天,他把许多积木块组成了好多高度不同的堆,每一堆都是一个摞一个的形式。代码结果如上:中间需要对vector进行遍历:将每个元素进行赋值,值的大小等于每一堆积木的积木块的数量,并计算总积木数量。其实很多概念没有完全搞清楚,然后也一直会犯一些不应该出现的错误,导致学习进度慢的同时,反复再做时还是没办法一下作对。总之还是多做吧,感觉也没有那么蠢,主要还是没去认真学概念打代码吧,就像做数学一样很想当然的就写答案这样。总体来说思想还是很简单的 :也即首先算出平均数,然后用高于平均的堆做差,累加即可。

2023-11-09 19:30:48 323 1

原创 C++语言基础学习6

2. 从正序数组中,每隔一个单位(即索引为奇数的元素),输出其值,同样用空格分隔。数组和容器相对操作比较复杂,需要记住的比较多,这里也会多打几次巩固记忆。1. 将输入的整数数组倒序输出,每个数之间用空格分隔。这一节主要是讲数组和vector(容器)用于存储。学校体测耽误了时间,补一补,题目如下。

2023-11-09 19:12:33 84 1

原创 C++语言基础学习5

本题是A+B系列的最后一题,也是前面几道题的综合,不涉及到新的语法知识点,我们可以把这节内容当成对之前学习的一个练习,但是仍然可以从这道题目中。先来看题目要求:输入的第一行为一个整数N,接下来N行每行会先输入一个整数M,然后在同一行内输入M个整数, 然后计算这M个整数的和。这个部分中,尾部std::endl的意思是如果有新的内容,则另起一行。如上是题目的注解,很遗憾写的时候没有注意到第二点,打印出来格式错误。会有多个N的输入,也就是说,会有多组测试数据。如有错误,敬请指正,不胜感激!

2023-11-06 22:07:54 68

原创 C++语言基础学习4

整体来说思路比较简单:首先检验n是否为0,为零直接break;不为零则开始逐步读取后续的值。很容易想到设定一个result用于计算总和。其中result = result + a;也可以写成 result += a;需要计算若干个整数的和,每行第一个数n表示后面有n个数,后面的几个数是输入的整数,如果n为0时,结束输入。(彩蛋:为什么我的代码经常报错)如有错误,敬请指正,不胜感激!

2023-11-06 21:32:26 67

原创 C++语言基础学习3

使用if和else做判断。如果if的条件成立,则运行if里的内容,否则运行else内的内容。也可以用else if建立多个分支结构。其中,break表示跳出而离它最近的while、do while、for语句的,break之后的代码都不会再执行。,但是会有一对是0和0,标志着输入结束,这意味着我们在遇到这种情况时需要主动退出循环操作,那我们就需要使用到。而continue则是,该次语句不执行,跳过该次,下次继续执行。语句来给程序加上一个退出的条件。留意:与&& 或|| 非!在本题中,任务仍然是计算。

2023-11-06 20:56:30 79

原创 C++语言基础学习2

此处判错,意思为只要有可输入的a,b就继续输入。实际上答案打印出来没问题,但是和题目意义不相符。如果N为10,有15行数对要输入就会出现错误。此外,也可以使用while控制次数。while的判断条件控制到0即停止,因此形如。如果是--a,则先计算后判断,简单记就是a离得近就先判断,离得远就先算。a=9,true,运行,a=8,打印。也即:a=10,true,运行,a=9,打印。同时,也可以用while嵌套判断,如下图所示。如有错误,敬请指正,不胜感激!如图,为a--的结果。如图,为--a的结果。

2023-11-06 20:44:00 78

原创 C++语言基础学习1

最后结果如上,连续的输入两组a和b,计算他们的结果,大致如图。cin》a》b这个表达式只要有a和b,且能输入就可以视为“正确的”。用于while的正确性判断。中间简单的出错了一次,没有习惯先注明定义的“result”的数据类型。其他总体来说比较简单。为了学习算法,先学习C++基础知识,希望尽快掌握和熟练基本知识。总体来说还是要熟悉语言的大致形状?如有错误,敬请指正,不胜感激!第一节 问题是计算a+b。

2023-11-06 19:56:05 77

原创 L1 深度学习的基本概念2

L1 深度学习的基本概念2

2022-07-15 18:14:15 393

原创 L1 机器学习基本概念

L1 机器学习基本概念

2022-07-15 16:41:38 480

原创 李宏毅机器/深度学习2022

课程概要

2022-07-15 15:39:40 339

空空如也

空空如也

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

TA关注的人

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