自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2024.9.29 Python 移掉 K 位数字,最长公共前缀,字母异位词分组

要点,stack只要有,或者k不为空或者后面的比前面的小,那就进入,然后把后面的全添加进去,最后把多余的pop掉,join的时候要统一字符串,还要取前置0,最后别忘了return 0 这个题要点多的很。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]输入:strs = [“flower”,“flow”,“flight”]输入: strs = [“a”]

2024-09-29 23:42:26 380

原创 2024.9.27 Arduino与新国大毕业设计总结与分析,基于Lora的无线气象站,Arduino板,ESP32板

这段代码的主要目的是通过看门狗定时器来控制数据收集和报告的周期性。通过在loop()函数中使用看门狗定时器,确保程序在规定的时间内完成数据收集和报告任务,并在完成任务后进入睡眠状态以节省能源。这种设计模式适用于需要低功耗和周期性数据报告的应用场景,如气象站、环境监测等。通过合理配置看门狗定时器和睡眠模式,可以在保证系统稳定性的同时,最大限度地减少能源消耗。这段代码的主要目的是初始化硬件(串口、TFT屏幕)、连接到WiFi网络,并在屏幕上显示连接状态和IP地址。

2024-09-27 16:39:11 2453

原创 2024.9.27 Python面试八股文

使用回调函数的方法就可以灵活的修改本函数中使用具体哪个块来操作。这个逻辑不是内联函数,仍然是函数的调用,是把函数的指针(地址)作为参数传递给另一个函数,将整个函数当作一个对象,赋值给调用的函数。在简单的场景下,可以直接写死回调函数,但在复杂项目中,回调函数作为参数能带来更多的灵活性和可维护性。这样你可以通过传入不同的回调函数来完成不同的任务,而不需要修改 process_data 本身的实现。4.列表名.index(数据):数据在列表中首次出现时的索引,没有查到会报错。1.列表.pop(index)

2024-09-27 14:53:13 686

原创 2024.9.26 Python,最大宽度坡,子集,数组的度再看

给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j]。最大宽度的坡为 (i, j) = (1, 5): A[1] = 0 且 A[5] = 5.最大宽度的坡为 (i, j) = (2, 9): A[2] = 1 且 A[9] = 1.输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]输入:[9,8,1,0,1,9,4,0,4,1]输入:nums = [1,2,3]输入:[6,0,8,2,1,5]输出:[[],[0]]

2024-09-26 19:23:49 291

原创 2024.9.25 Python,单词替换,优美的排列 II,sort的用法前K个高频单词,广度优先搜索腐烂的橘子

应该是目前做力扣以来最自豪的一次,完全是全新的逻辑,从摸索规律到修改,中间修改过while里的可能性,k==2的时候的插入逻辑,之前的是提前到第一个,但是这种情况会导致k不增加了,所以要修改这种可能性,我发现和最后一位进行交换可以只加一种可能性,所以我就直接-1,然后index的设定也很好。这个题很简单,但是这里需要注意的是,中间注释的部分,二选一即可,在字典中,还有在set中找东西都是O(1)的时间复杂度,所以使用set还有dictionary的性能表现会非常的好,当然不加也行,想累死编译器也成。

2024-09-25 21:57:20 703

原创 2024.9.24 Python与C++面试八股文

在一个头文件中,如果这个变量声明了,但是在cpp文件中没找到他的定义,那么编译就会报错,但是如果加了extern,编译器就不会给头文件报错,而是给cpp文件报错,如果函数没定义的话。在C中,我们使用define来定义这种函数,井号define是一种,文本替换的选择,就是默认的把一种文本转换成另外一种文本,方便快捷,但是不检查数据类型,所以可能出现意想不到的问题。在C++中,可以直接把函数定义为内联函数,也就是inline,这样在编译的时候,编译器会直接把这个代码加入到代码中,避免了函数调用的开销。

2024-09-24 23:12:57 752

原创 2024.9.23 Python会议室,堆的使用,用最少数量的箭引爆气球,字典遍历的操作,找到字符串中所有字母异位词,丑数

我最开始一看,这玩意不就是列表吗,有什么区别,但是后来我发现有点不对劲,这个堆好像还真有说法,他是默认最小堆的,也就是说堆的最上面就是最小值,那不就完了,如果当前会议的开始,比堆顶的最小值还小,那就得开新值了,所以就直接压堆就好了,那如果比对顶的最小值要大,那整挺好,直接pop一个,然后压一个进去,这个逻辑挺好的,你不知道气球的确切 y 坐标。贪心算法,就是说,以最大值排序之后,第一个值的右边界,只要能包括最多的气球,那就继续遍历,如果出现第一个左边界大于右边界的,那就更新一个右边界,最后别忘了补一个。

2024-09-23 18:27:35 1023

原创 2024.9.22 Python与C++面试八股文整理

就是说,在类中函数传递的过程中,会出现一种特殊情况,那就是,定义类,其实在某种程度上是定义了一种数据类型,但是他的创建是用我们已知的数据类型组合而成的,如果组合的时候,已知的数据类型只有一个,比如说,Myclass(int x)理论上,我们使用函数的时候,直接把int类型带进去也可以计算的,因为在编译器中,他针对这种单变量的class或者是多变量,但是有默认值的class进行了隐式转换,让你能使用了。如果一个类的成员是const,它的值必须在对象创建时初始化,而且一旦初始化后就不能再改变。

2024-09-22 18:29:15 1716

原创 2024.9.21 Python,深度优先搜索和广度优先搜索解决课程表

我感觉这种算法题,如果让我自己去想一种新的算法,真的难如登天,我好像只会从自己熟悉的部分做起,在做这个题的时候,先不说逻辑是不是正确,我的判断条件想的特别难受,倒腾这个逻辑难死我,到底是判断prev在不在,还是cur在不在,还是dic[i]在不在。这个题的逻辑我看懂了,其实我的想法是对的,只不过就是,我的字典是一对一的字典,而应该是一对多的字典,用循环逐个再带入dfs进行操作反复检验,如果检查过了,那就全员变2,这个逻辑不是我能做出来的东西。学习课程 1 之前,你需要完成课程 0。方法一:深度优先搜索。

2024-09-21 21:54:25 232

原创 2024.9.21 Python与C++的面试八股文整理,类与对象,内存规划,默认函数,虚函数,封装继承多态

(1)类是一种蓝图或者模板,用于定义对象的属性和行为,类通常包括:属性,也就是静态特征,方法,也就是动态特征。属性描述对象的特征,在初始化中输入或者直接写入,方法就是针对于类的函数(2)而对象就是类的具体实例化,比如class Solution: sol=Solution() 类是定义对象的规则和结构,而对象是实际使用类的实例。类可以看作是“设计图”,而对象是根据设计图构建出的“实物”。(3)面向对象编程是一种编程范式,使用对象来组织程序的逻辑。

2024-09-21 18:39:02 2580

原创 2024.9.20 Python模式识别新国大EE5907,PCA主成分分析,LDA线性判别分析,GMM聚类分类,SVM支持向量机

1.PCA 主成分分析用于特征提取、可视化和分类根据要求,我在第一个代码框中完成了从指定路径提取图像数据,将其转换为灰度图像并将其展平。在这里,我将数字 88 设置为我的照片的标签,然后将所有 10 张照片传入代码。然后我定义了 PCA 函数,计算居中数据,计算协方差矩阵,并计算协方差矩阵的特征值和特征向量。然后对特征向量进行排序,并保留最大的 n 个特征向量。接下来,我将图像的维数降低到 2D 和 3D。图像在二维和三维空间中均有显示。在图中我使用红点来显示我的图片。import osimport

2024-09-20 18:12:59 2213

原创 2024.9.17 Python

1.现有字典 d={‘a’:24,’g’:52,’l’:12,’k’:33}请按字 典中的 value值进行排序?8.请写出一段 Python 代码实现删除一个 list 里面的重复元素?3.列表名.remove(数据):删除第一个出现的指定数据。2.del 列表名[index]:删除指定索引的数据。7.列表名.index(数据) 查找。4.列表名.pop(index)[1]换成0即可变成按照键排序。5.列表名.reverse()6.列表名.count(数据)

2024-09-17 18:57:18 351

原创 2024.9.16 Python,最短的桥

1.代码能过但是超内存了,原因是我创建了大量的deque,导致旧的deque没有删掉,所以超内存了。你现在想这么个逻辑,那就是,为什么前面要用deque,是因为你现在不知道自己要遍历多久才能停,所以才用deque去搜索,现在你都有了island的列表,你根本不需要使用的确来去做这个事情,也就是说你可以直接去遍历island里的所有的元素,这样的话就不需要重复的建立新的deque。2.另外,在遇见0的时候别忘了置-1,我第一次做的时候忘记这个了。

2024-09-17 17:33:15 357

原创 2024.9.15 Python模式识别新国大EE5907,总结PCA,LDA,Clustering,GMMboosting,SVM

SVM 的主要目标是找到一个能够最大化分类边界的超平面,这个边界能够将不同类别的数据点尽可能分开。在更高维度中,超平面是一个维度更高的几何体。4.根据特征值的大小排序,选择最大的 k 个特征值所对应的特征向量,构成一个新的特征空间。主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息。LDA 的核心思想是通过找到一个投影方向,使得数据投影到这个方向时,不同类别的样本之间尽可能地远,而同类别样本之间尽可能地近。

2024-09-15 12:38:24 1523

原创 2024.9.14 Python,差分法解决区间加法,消除游戏,压缩字符串

输入:chars = [“a”,“b”,“b”,“b”,“b”,“b”,“b”,“b”,“b”,“b”,“b”,“b”,“b”]输入: length = 5, updates = [[1,3,2],[2,4,3],[0,2,-2]]输出:返回 6 ,输入数组的前 6 个字符应该是:[“a”,“2”,“b”,“2”,“c”,“3”]输出:返回 4 ,输入数组的前 4 个字符应该是:[“a”,“b”,“1”,“2”]。输入:chars = [“a”,“a”,“b”,“b”,“c”,“c”,“c”]

2024-09-14 21:06:23 623

原创 2024.9.14 Python与图像处理新国大EE5731课程大作业,马尔可夫随机场和二值图割,校正立体图像的深度

现在通过更改lmd的值可以看到不同的效果,lmd小的时候,噪声很大,lmd大的时候,深度信息就看不清了,对比相同lambda,不同dpeth的深度图,在dmin和dmax不变的情况下,深度层数越少,深度图中的噪声越小。生成图像匹配的能量(unary)矩阵,每个像素点有多个视差候选值(基于不同的深度),该函数计算每个像素与可能的匹配点之间的差异并归一化为能量值。作用: 这个步骤通过遍历图像中的每一个像素点,计算它在不同视差下的匹配质量,输出的 unary 是图像的视差匹配成本图,后续会用于图割算法。

2024-09-14 18:36:11 1357

原创 2024.9.14 Python与图像处理新国大EE5731课程大作业单应性矩阵和RANSAC,拼接透视图

4.对des2做同样的操作,然后进行双向匹配验证,如果某个匹配对的 queryIdx 和 trainIdx 在两者之间是相互一致的(即 des1 和 des2 之间的匹配是对称的),就将该匹配对存入 matches 列表中。1.为图像1的点添加齐次坐标,为图像1中的点 p1 添加一个维度,使得每个点变为齐次坐标形式,即 (x, y, 1),方便进行矩阵乘法。𝐻,将图像 ℎ1的四个角点变换到新的坐标系中,并计算变换后的坐标范围(最大和最小的 x、y 值),从而获得变换后图像的尺寸范围。

2024-09-14 15:53:09 1493

原创 2024.9.13 Python与图像处理新国大EE5731课程大作业,SIFT 特征和描述符,单应性矩阵透视变换

具体来说,SIFT 会在不同的尺度(即图像的不同分辨率)下检测图像中的特征点,这使得它可以检测到图像中大小不同的结构或特征。在绘制关键点时,圈圈的大小越大,表示该关键点的特征在更大的尺度上被检测到,也就是说,它代表了图像中较大的局部结构。3.绘制关键点flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS: 使用这个标志,关键点会被以圆圈的形式绘制,并且每个圆圈的大小和方向会根据每个关键点的尺度和角度进行调整,使得你可以看到关键点的特性(即关键点的大小和方向)。

2024-09-13 20:05:00 1227 1

原创 2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘

理论上求该点的平方和然后开方才应该是这个点的真实梯度,为什么要用绝对值和呢,因为在庞大的计算中,如果都去做平方和,那就太耗费系统资源了,所以使用绝对值和是近似的计算方法,忽略了方向性,只看水平和垂直梯度的绝对强度之和,它可以提供相对较强的边缘信息,但缺少准确性,边缘会显得比较尖锐和不平滑。Sobel 卷积核也是用于边缘检测的,但与 Haar 核不同,Sobel 核使用的是平滑的梯度变化,而 Haar 核直接检测的是 1 和 -1 的急剧变化。ga2 是较大的高斯核,平滑效果较强,适合噪声较大的图像。

2024-09-13 17:05:33 1082

原创 2024.9.12 Python 累加数,子串操作,分割回文串,长度最小的子数组,整数拆分

1.addString函数,用来计算两个字符串的加法,比如[1,2,3]和[4,5,6,7]相加,那么就应该是7和3加,然后carry记录升位,如果i已经=-1了,那么就输出0,分别计算每一位,存入列表里,然后之后再反向输出’'.join。3.while函数的目的是为了在当前条件下,向下走,而不是确定cur边界,就是说,在下面的for循环中,我们用来确定前两个数具体是谁,然后我们根据前两个数来计算第三个值的期望,如果他是我们要找的值,那么就往下走,检查下一组,如果不存在符合条件的子数组,返回 0。

2024-09-12 17:50:20 1140

原创 2024.9.11 Python,被围绕的区域,打家劫舍,在D天内运送包裹的能力

你是一个专业的小偷,计划偷窃沿街的房屋。输入:board = [[“X”,“X”,“X”,“X”],[“X”,“O”,“O”,“X”],[“X”,“X”,“O”,“X”],[“X”,“O”,“X”,“X”]]输出:[[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“O”,“X”,“X”]]标准的动态规划问题,只有两种选择,要么偷这一家,要么不偷这一家,不偷,该家的dp就是,上一家的dp,偷了就是这家的钱加上上家的钱。

2024-09-11 22:07:21 615

原创 2024.9.10 Python,下一个排列

这个题大概的逻辑是,从后往前找第一个降序值,然后记为left,从后往前找第一个大于left的值的,记为right,然后交换,之后把left之后的所有的值全部升序排列,也就是代码里的翻转,挺无聊的一个题,难点是理解题目想要干什么。例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。而 arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。

2024-09-10 20:37:44 329

原创 2024.9.9 Python,有效的括号,三数之和,回溯算法解决括号生成

3.循环条件是second要小于third,对ans进行判断,如果小于,那就second放大,如果大于,那就third调小,如果相等,那就记录并且第三个降一个,也可以third和second同时降,这样的用时反而会更少。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]每个右括号都有一个对应的相同类型的左括号。我自己的办法,有太多太多的无用功了,超时。

2024-09-09 18:35:20 850

原创 2024.9.8 TCP/IP协议学习笔记

假设网络是不可靠的,被动断开方发送FIN+ACK报文后,其主动方的ACK响应报文有可能丢失,这时候的被动断开方处于LAST-ACK状态的,由于收不到ACK确认被动方一直不能正常的进入CLOSED状态。关闭连接时,被动断开方在收到对方的FIN结束请求报文时,很可能业务数据没有发送完成,并不能立即关闭连接,被动方只能先回复一个ACK响应报文,告诉主动断开方:“你发的FIN报文我收到了,只有等到我所有的业务报文都发送完了,我才能真正的结束,在结束之前,我会发你FIN+ACK报文的,你先等着”。

2024-09-08 20:30:14 859

原创 2024.9.7 Python,广度优先搜索解决无向图中到环的距离,买卖股票的最佳时机

分析:这个题我的最开始想法是,找最小值,然后找最大值,这样就出来了,那么这样的问题是,你无法保证是最小值在前,最大值在后,所以我的第二个想法是,从后向前找最小值,然后算这个值之后的最大值,然后做差,然后从后向前遍历,那么这样的循环其实最后的时间还是两层遍历,那我还不如从前向后找呢,有什么区别吗。这里的逻辑是,取末端节点,加入非环节点的队列中,然后遍历他的邻居。输入: n = 9, edges = [[0,1],[1,2],[0,2],[2,6],[6,7],[6,8],[0,3],[3,4],[3,5]]

2024-09-07 20:11:51 620

原创 2024.9.6 Python,华为笔试题总结,字符串格式化,字符串操作,广度优先搜索解决公司组织绩效互评问题,无向图,拼图游戏

0带入以后,进queue,然后给0的颜色置0,从队列里pop一个值出来,先问下这个值的颜色是什么,再问问他的对面是什么,读这个值的好友都有谁,遍历当前值的好友,如果他的好友没有染色,那么就给他染上对面的颜色,同时把他的好友加入queue里,再次循环。表达式中仅会出现AND,OR,(、),’,空格,=,子段名,数据(单引号内部),给出的表达式一定是有效的,AND的优先级高于OR。输出:分组方案按照节点编号排序,如果两个方案第一个节点相同,按照第二个节点排序,以此类推,如果无法分成符合的两组,那么输出-1。

2024-09-06 18:24:18 2176

原创 2024.9.3 Python,二分查找解决在D天内送达包裹的能力,dfs二叉树的层平均值,动态规划二分查找贪心算法解决最长增长子序列和马戏团人塔

dp这里代表的是在指针在当前值的情况下把当前值算进去的,最长的子串长,那么上一个元素的,你在当前值前向遍历所有的值,如果遇见一个比自己小的数,那就读取他的dp值,然后给他的dp值加一,同时和自己的dp值进行比较,大的那个就是自己新的dp值,这样最后选最大的dp值就是最长的子串。请注意,货物必须按照给定的顺序装运,因此使用载重能力为 14 的船舶并将包装分成 (2, 3, 4, 5), (1, 6, 7), (8), (9), (10) 是不允许的。传送带上的第 i 个包裹的重量为 weights[i]。

2024-09-03 19:47:30 1412 1

原创 2024.9.2 Python,用栈写每日温度,等差数列划分,子串所有可能性,等差数列划分,深度优先搜索解决累加数

这个代码最巧的地方在于t+=1这里,我看这个代码的时候我心想这玩意加一有什么意义呢,每次发现一个新的元素,他要多好多子串呢,这咋能数的过来,但是其实很简单,比如三个元素的等差变四个元素的等差的时候就多了两种可能,四个元素变五个元素的时候就多了三种可能,是有规律的,所以这样遍历下来是合适的,只能说又是一个自己想是想不出来的题。2.到n-2的时候,最后一个温度和当前温度比较,之后的温度小就进循环pop掉最后一个温度,然后res[i]=0,如果最后一个温度比他大,那么就不pop了,res[i]=1。

2024-09-02 20:24:07 1085

原创 2024.9.1 Python,跳跃游戏,贪心算法,回溯算法复原 IP 地址,关于回溯过程中列表的[:]以及copy问题再讨论

先祝各位C友们9月快乐,生活幸福。

2024-09-01 20:25:35 1557

原创 2024.8.31 Python,合并区间,用sort通过列表第一个元素给列表排序,三数之和,跳跃游戏

造成这样的原因是,前面四个都没有找到合适的好兄弟来给他缩进去,导致最后一个救赎他们的进来了以后每一个都救赎了一遍,但是本身他们应该是一体的,也就是说,如果1,10早早来的话,就没这么多事了,所以我就不知道该怎么办了,一看答案,发现答案里有一个先排序的操作:intervals.sort(key=lambda x: x[0]),这个操作的含义是按照第一个元素先给所有的列表排序,现在我才懂了,列表的最后一个控制到底有没有连接,列表的第一个控制先后顺序,所以在这个操作中必须得先排序。初始位置为 nums[0]。

2024-08-31 21:33:24 1040

原创 2024.8.30 Python 最大连续1的个数,滑动窗口,排列组合,三数之和

这个方法非常的巧妙,有点动态规划的思路,他是通过前n项和来进行计算的,首先是生成这个数列的前n项和的列表,然后此时的P就是一个单调递增的列表,那么就有right所在位置的n项和减left-1所在位置的n项和,就为这中间的1的数量,注意是left-1,因为left自己是要加上的,所以你减的时候应该减去left-1的n项和,left到right中间包括两边的所有列表元素就能包含进去了。输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3。

2024-08-30 20:40:51 1259

原创 2024.8.29 Python,排序算法,列表的append规则

也就是说,nums1[1:3]这样的子串仍然是列表。这是我手写的,夸一下自己。

2024-08-29 19:46:16 411

原创 2024.8.28 Python,复习,全排列的dfs

如果问我如何克服编程学习的挫折感,我的评价是,感觉挫折的时候不如回头看看,之前学过的东西是否完全掌握了,那么这节复习课就来了。

2024-08-28 21:08:28 427

原创 2024.8.27 Python,广度优先搜索找最短的桥,最大连续1的个数(二分法和滑动窗口),日期之间隔几天,用栈写计算器,二叉树染色

这个函数返回的是第一个大于或等于指定值的位置。首先要去找最少的翻0的数,不如去全部翻转,找有多少个1,原式就有多少个0,所以代码的第一部分就是在干这个事情。现在的目标是,在这个岛的基础之上,均匀的往外扩展一层,那么现在就需要遍历这个岛的所有的-1,然后在旁边置-1,只一层,那么就是从一个队列里遍历现有的岛屿,然后新置-1的部分不遍历,这样就能稳定的只扩一层。输入:grid = [[1,1,1,1,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,0,0,1],[1,1,1,1,1]]

2024-08-27 20:32:46 856

原创 2024.8.26 Python,最大子数和与动态规划,最小路径和,分割回文串,字典序排数,最长重复子数组(动态规划)

上一个题中的dp[i]为一维的,而这次的dp变成了二维的,所谓动态规划就是说,我们在计算的过程中可以不需要从头再来计算一次,我们可以通过前人的经验来去总结规律,比如青蛙跳高问题,青蛙可以一次跳两个也可以一次跳一格,那么他跳到第n个格有多少种可能的跳法,我们就是要找到一些规律来去总结这个问题,比如现在就只有abcd四格,那么从a到b有一种,a到c有两种,那么a到d就有2+1=3种,那么a到e就是a到d加a到c。输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]

2024-08-26 21:19:34 1235

原创 2024.8.24 Python,链表异常断裂问题,双链表的建立问题,全排列中的引用机制与copy的使用,最大子数组和

这个代码没什么好说的,这是一个对于数组的很好的操作,我觉得这些代码中的max(0,index-step)还有min(index+steps,len(self.history)-1)这两个操作来去限制back和forward,是值得我去学习的。输出是:[[1,2,3],[1,2,3],[1,3,2],[1,3,2],[1,2,3],[2,1,3],[2,1,3],[2,3,1],[2,3,1],[2,1,3],[3,2,1],[3,2,1],[3,1,2],[3,1,2],[3,2,1],[1,2,3]]

2024-08-24 21:30:07 1082

原创 2024.8.23 Python,类与对象,解决实际问题,设计停车系统,不用内部函数定义字典,设计地铁系统

这个逻辑非常的好,chat把这个东西称为桶,我的理解就是分组存,说到底还是得存,所以就索性用批量存储,既然给了key,那我就先处理一下,给key除以1000的余数,那就给这么多键值对分成1000组里,要找的时候,我先判断一下大致在哪个桶中,然后再进行遍历寻找操作。我看到这个题的第一反应是,既然是int和int的字典,那我就把字典搞成数组,你出现的最大的键就是我的数组的大小,但是我当时这样想完就否决了,这样太大了,但是答案的第一个办法就是这样写的。如果映射中不包含 key 的映射,返回 -1。

2024-08-23 19:43:54 664

原创 2024.8.22 Python,链表两数之和,链表快速反转,二叉树的深度,二叉树前中后序遍历,N叉树递归遍历,翻转二叉树

讲道理,再看二叉树确实有种秒杀了的感觉,如果是链表的话,我们可能会考虑用while去数数,但是你现在要考虑一个事情,在链表里,你永远只有一种可能,所以你可以使用while来进行搜索,但是现在你变成二叉树了以后,不是变成了两种可能性,而是直接变成了2的次方的可能性,所以就必须要使用递归来进行可能性的所有遍历,而这就是回溯算法的优势所在,也就是说你不知道要做多少次while的嵌套的时候,那就使用回溯算法来嵌套函数。1.前序遍历是根,左,右,中序遍历是左,根,右,后序遍历是左,右,根。

2024-08-22 20:51:29 1196

原创 2024.8.21 Python,链表排序,快慢针归并排序,冒泡排序,快速排序,链表两数之和

接下来我将逐步解决,双指针问题给链表排序,还有通过链表转列表然后冒泡排序后再转为链表。

2024-08-21 20:51:22 864

原创 2024.8.20 Python,链表,二叉树

代码逻辑:第一层,对l1.val进行判断,谁小听谁的,目标是输出这个链表,那就要修改这个链表,在第一层的时候,是先进函数,再赋值,所以在第一层的时候还没进行赋值就已经进第二层了,在第二层的时候还没赋值就又进第三层了,以此类推,然后每一次都抛掉一个最小的数。可能之后就理解了吧。我想了下,我决定不管了,就跟二分法当时一样,我直接按逻辑走,谁小谁就去用他的next继续和他刚才的人比,同时输出他自己本身,完事了。链表是线性表,是一维的,保存了现在这个数的值和下一个数的地址,分为表元素域,下一结点链接域,

2024-08-20 21:23:22 611

空空如也

空空如也

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

TA关注的人

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