自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Leetcode刷题记录】46. 全排列

在搜索过程中,每一个元素都有一个使用和未使用的标记,所以需要使用一个标记数组来记录哪些元素已经使用过,同时需要一个路径数组来记录当前构建的排列。观察上述树型结构,在叶子节点处,路径数组长度等于原数组长度时,表示已经找到了一个完整的排列,此时将当前路径加入结果集,并结束当前递归。全排列就是要找出数组里所有元素的所有排序方式。你得一个一个试着把每个数字放在不同的位置上,看看能组成哪些排列。函数没有显式的返回值,而是通过修改全局变量res(存储所有可能排列的结果集)来间接输出结果。给定一个不含重复数字的数组。

2025-02-27 18:00:07 473

原创 【Leetcode刷题记录】33. 搜索旋转排序数组

的查找算法,那显然是采用二分查找的方式,但是旋转后的数组在整体上是无序的,而要采取二分法则必须要求数组有序,但是,如何对旋转后的数组进行排序,那么时间复杂度最低也是。观察数组其实不难发现,虽然数组整体是无序的,但是数组旋转后有两个严格单调的区间,可以在这两个区间上进行二分查找。,则返回它的下标,否则返回 -1。上进行了 旋转,使数组变为。,那么在这两个单调区间的边界。在预先未知的某个下标。,左边的严格单调区间包含。按升序排列,数组中的。给你 旋转后 的数组。右边的严格单调区间包含。

2025-02-27 17:55:42 292

原创 【Leetcode刷题记录】153. 寻找旋转排序数组中的最小值

由于原升序数组在某点进行了旋转,将旋转后的数组分成A(绿色部分)和B(蓝色部分)两个部分,A中的任意元素大于B中的任意元素,在。,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。部分的最大值,那么要将搜索区间左侧向右缩小。通过这样的操作,搜索区间会向。部分末尾,那么就要将搜索区间右侧向左缩小。部分的第一个元素逼近,也就是要找的最小值。的数组,预先按照升序排列,经由。你必须设计一个时间复杂度为。部分内部也是升序的。

2025-02-27 17:54:04 162

原创 【Leetcode刷题记录】1552. 两球之间的磁力 二分搜索:最大化最小值问题

在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。合法,那么说明当前的最小距离可以更大,因此将左边界右移,否则将右边界左移。同时更新上一个篮子的位置为当前篮子的位置。数组,从第一个篮子开始,如果当前篮子与上一个篮子之间的距离大于等于。就是任意两个篮子之间的最大可能距离和最小可能距离之间的某一个值。个球放入篮子中,使得任意两个球之间的距离都大于等于。,题目要求返回最大化的最小磁力,记为。右边界设置为最远的两个篮子之间的距离。

2025-02-15 17:33:42 393

原创 【Leetcode算题记录】1742盒子中小球的最大数量&&3160所有球里面不同颜色的数目 模拟+哈希表

你的工作是将每个小球放入盒子中,其中盒子的编号应当等于小球编号上每位数字的和。例如,编号 321 的小球应当放入编号 3 + 2 + 1 = 6 的盒子,而编号 10 的小球应当放入编号 1 + 0 = 1 的盒子。题目要求返回最多的小球数量,只要在更新了哈希表后,和当前的盒子中球的数量比较一下,取最大值即可。的小球放入盒子中,放入规则是将编号为idx的小球的每一位相加得到要放入的盒子的编号。,将每个编号的小球放入对应的盒子中,统计每个盒子中球的数量,返回数量最多的盒子中球的数量即可。

2025-02-15 17:24:26 397

原创 【Leetcode刷题记录】80. 删除有序数组中的重复项 II --快慢指针

请注意,输入数组是以**「引用」**方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。是第n(n>=3)个重复的元素,此时跳过该元素,否则将。左侧是安置好的数组,意味着每一个元素最多出现了两次。// 在函数里修改输入数组对于调用者是可见的。这个区间上的元素都是相等的,而这个区间的。继续向右移动,这里需要注意的是,左侧是安置好的数组),当。

2025-02-13 16:47:43 360

原创 【Leetcode刷题记录】34. 在排序数组中查找元素的第一个和最后一个位置--一道题搞定二分法基础知识

函数是为了找到一个精确匹配的目标值的位置,一旦找到即返回该位置而不会继续寻找相同值出现的其他位置,对于元素有重复的情况,函数进行修改,使其返回目标值的开始位置,也就是查找第一个不小于(即大于或等于)目标值的元素的位置。(1)每次折半的时候两端的坐标应该移到mid的位置上还是多偏移一个元素。请你找出给定目标值在数组中的开始位置和结束位置。返回的并不一定是第一次出现或者最后一次出现的位置。函数,即查找第一个大于目标值的元素的位置。的主要区别在于区间更新的规则,对于。的位置,也就是找到第一个大于。

2025-02-13 16:40:55 1027

原创 【Leetcode刷题记录】54. 螺旋矩阵--模拟,以及循环条件处理的一些细节

给你一个m行n列的矩阵matrix,请按照,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]

2025-02-07 16:31:52 313

原创 【Leetcode刷题记录】90. 子集 II

我们可以通过简单的比较当前元素和前一个元素来决定是否应该包含当前元素到子集中。如果当前元素与前一个元素相同(因为数组已经排序),并且前一个元素没有被选入当前子集(即掩码中的对应位是 0),这道题同样使用位运算求解,但是需要考虑重复元素的问题,对于重复元素,我们只需要在枚举的过程中跳过即可。并且前一个元素没有被选中,则可以选择跳过当前元素,从而避免产生重复子集。,排序可以确保相同元素相邻,而且可以简化去重逻辑,一旦数组被排序,,其中可能包含重复元素,请你返回该数组所有可能的。掩码 011 -> {4, 4}

2025-02-06 21:27:38 358

原创 【Leetcode刷题记录】78.子集--使用位掩码法求解

例如,对于一个包含3个元素的数组{1, 2, 3},总共有2^3 = 8个子集。1<<1=10 101&10=0 因此不将第1个元素2加入子集中。1<<0=1 101&1=1 因次将第0个元素1加入子集中。1<<2=100 101&100=1 因此将第2个元素3加入子集中。位二进制数,如何确定其对应的子集。(包括空集),那么可以将每一个子集与一个长度为。个元素加入子集中,否则不加入子集中。整个过程的关键点在于,对与枚举的到的一个。所以,101对应的子集为{1,3}的集合,它的子集数为。

2025-02-06 21:25:47 605

原创 【Leetcode刷题记录】2090. 半径为 k 的子数组平均值--定长滑动窗口解法和前缀和解法

的子数组中所有元素的平均值,即下标在。)内所有元素的平均值。,因为无法形成一个完整的半径为。,即需要去掉结果的小数部分。个整数,另给你一个整数。构建并返回一个长度为。

2025-02-04 22:10:51 1042

原创 【Leetcode刷题记录】1456. 定长子串中元音的最大数目---定长滑动窗口即解题思路总结

的子串,逐个计算每个子串中元音字母的数量,并记录过程中遇到的最大元音数量。暴力求解法要用到双重循环,时间复杂度是。表示这个子串所包含的元音字母的个数,那么下一个长度相同子串所包含的元音字母个数。的单个子字符串中可能包含的最大元音字母数。这道题的暴力求解的思路是通过遍历字符串。

2025-02-04 22:08:40 885

原创 【Leetcode刷题记录】680. 验证回文串 II

请你判断 s 是否能成为回文字符串:如果能,返回 true;否则,返回 false。时,两个指针所指的字符必须有一个要删除,我们分别判断删除左指针指向的字符后留下的子串。判断字符串是否是回文我们可以使用双指针的方法来求解,定义左右指针。给你一个字符串 s,最多 可以从中删除一个字符。,如果不是,那么枚举每一个被删除的位置,判断删除字符后是否是回文,如果是返回。那么针对这道题,采用双指针解法,当。和删除右指针指向的字符留下的子串。是否是回文,如果有一个是返回。是不是回文,如果是直接返回。

2025-02-03 12:09:40 789 1

原创 【Leetcode算题记录】枚举技巧(枚举右,维护左)

在遍历数组nums时,用哈希表cnt保存当前遍历过的每个数字及其出现的次数,对于每个元素nums[j],其之前出现的次数即为与之构成好数对的数量,将这些数量累加到结果ans中,并更新nums[j]在哈希表cnt中的计数,最终返回累加的好数对总数ans。如果先更新哈希表再累加好数对,那么我们在查看哈希表时得到的就是包括当前元素在内的总出现次数,这会导致我们将当前元素与自己也计算为一个好数对(即i == j的情况,但题目要求i < j),这不符合题目要求。的窗口,窗口中任意一个索引的差值的绝对值都不会超过。

2025-01-31 10:28:57 910

原创 【Leetcode刷题记录】166. 分数到小数

首先要明确两个数相除的结果肯定是整数,有限小数,或无限循环小数。那么可以通过模拟手动除法,也就是竖式除法的过程来求解这道题。手动除法的过程就是不断对余数补0,再重新计算余数和除数的新余数,由于我们一直是对余数进行补0操作,那么如果出现了相同的余数,就说明产生了。如果小数部分为循环小数,则将循环的部分括在括号内。给定两个整数,分别表示分数的分子。如果存在多个答案,只需返回。答案字符串的长度小于。对于所有给定的输入,

2025-01-30 11:42:42 217

原创 【Leetcode刷题记录】179. 最大数--贪心法自定义排序策略

这里是指如果a比b“更优”,而b又比c“更优”,那么a也应该比c“更优”,也就是。比较靠谱的思路是让高位的数字尽可能的大,比如说。**注意:**输出结果可能非常大,所以你需要返回一个字符串而不是整数。第一反应是数组降序排,大数在高位小数在低位,但显然不是这样的,比如说。,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。,这个结果是9534303但是9534330是更大的结果,是指任何元素与自身比较时都应该是相等的,对与任意一个数字。,这个思路看起来很好,但是题目给的这个用例。

2025-01-28 12:19:13 1054 1

原创 【Leetcode刷题记录】45. 跳跃游戏 II--贪心算法

除此之外还有一种贪心解法,我们的目标是到达数组最后一个位置,因此我们可以考虑最后一步跳跃前所在的位置,从起点往终点开始搜索,显然会出现有多个位置都可以跳跃到数组的最后一个位置的情况,那么我们选取距离最远的那个位置,找到一次跳跃前的位置后,继续按照这样的步骤,一直找到开始位置为止。在每一步中我们都尝试找到能让我们跳得最远的位置,从而确保在最少的跳跃次数内到达数组的最后一个位置。),还要考虑在这个范围内所有可能的下一步跳跃位置,并从中选择一个使得我们能够到达最远距离的位置进行跳跃。处,你可以跳转到任意。

2025-01-28 12:17:19 1219

原创 【Leetcode刷题记录】53. 最大子数组和--前缀和解法

请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。,为了确保在后续计算中能正确地找出最大子数组和,我们需要维护遍历过的最小前缀和(输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。记录当前找到的最大子数组和。记录遍历过程中遇到的最小前缀和。常规解法是动态规划,这里采用前缀和的解法。的和,也就是说对于数组中的任意两个索引。因此,我们的目标是找到这样的一对。是数组中的一个连续部分。数组,更新最大子数组和(

2025-01-27 10:21:25 693

原创 【Leetcode刷题记录】454. 四数相加 II

给你四个整数数组nums1nums2nums3和nums4,数组长度都是n,请你计算有多少个元组题目要求nums1inums2jnums3knums4l==0,类似这道题,可以固定一个元素然后再找其他三个元素,但是这个时候时间复杂度就是On3,因此可以先固定两个元素,然后去寻找另外两个元素,这时时间复杂度就是On2。将题目要求的这个式子nums1inums2jnums3knums4l==0。

2025-01-27 10:19:53 858

原创 【Leetcode刷题记录】2944.购买水果需要的最少金币数

问题分析到这里,很难不想到使用动态规划解决。所以,对于这些可以免费获得的水果。个水果所需的最小金币数,如果我们决定购买第。于是状态转移方程就是。个金币来购买它,并且能够免费获得从。个水果之前已经花费的金币数。个水果,那么我们可以用。,并且我们应该选择让。

2025-01-26 10:45:15 644 1

原创 【Leetcode刷题记录】16.最接近的三数之和

这道题和三数之和很像,不同点是这道题找的是最接近target的一个三元组,但是整体的思路还是一样的,用排序和双指针,就是内循环的逻辑处理不同。先对数组排序,然后固定住一个元素,内部循环使用双指针。,用于记录当前找到的最接近target的三数之和;在内循环中,首先计算当前三数之和。指针指向最后一个元素,由于我们要返回最接近。的三元组的和,因此需要维护两个变量:一个是。指针(left++)还是向左移动。指针指向固定元素后一个元素,遍历完整个数组后返回最接近。的比较结果来决定向右移动。

2025-01-26 10:44:53 321

原创 【Leetcode刷题记录】18.四数之和

将其作为潜在的四元组的第一个元素,那么对于。是类似的,或者说就是三数之和。后面的所有元素,可以看做另一个数组。中寻找不重复的三元组使其满足。进行排序,遍历数组中的元素。

2025-01-25 19:14:13 414

原创 【Leetcode刷题记录】15.三数之和

对于这道题,最先想到的可能就是三重循环暴力枚举所有可能的三元组,但是这样做肯定是超时且不优雅的。因此要寻求一个更优化的解法,就是排序加双指针。先对数组进行排序,这样做不仅有助于避免结果中的重复三元组,还为后续应用双指针奠定了基础。一旦数组被排完序,我们可以遍历数组中的每一个元素。t指针则指向数组的最后一个元素。通过移动这两个指针,可以尝试找到满足条件的其他两个数。当找到一组满足条件的三元组时,我们将它添加到结果集中。,我们就增加left指针以尝试获得更大的值;将其作为潜在的三元组的第一个元素,对于每一个。

2025-01-25 15:57:59 455

原创 【Django】初识Django&快速上手

Django是一个高级的、开源的Python Web框架,旨在快速、高效地开发高质量的Web应用程序。

2024-04-27 21:33:21 1395 3

原创 【Hello,PyQt】背景图片不覆盖控件的方法

使用这种方法绘制图片如果图片比较小会在窗口上重复显示,所以要先把图片缩放到窗口大小然后设置到QPalette上 newpix=pixmap.scaled(self.size())

2024-04-20 16:29:02 592 2

原创 CSS实现广告自动轮播

实现原理该广告轮播功能的实现主要依靠HTML和CSS。HTML负责搭建轮播框架,而CSS则控制样式和动画效果。通过CSS中的关键帧动画(Keyframes),我们可以定义图片在容器内的滚动效果,从而实现轮播功能。

2024-04-20 16:25:04 1259

原创 【Hello,PyQt】PyQt5中的一些对话框

创建布局# 添加组件# 按钮布局# 添加组件到主布局# 按钮事件绑定。

2024-04-02 20:17:50 1390 1

原创 【Hello,PyQt】控件拖拽

在 PyQt 中实现控件拖拽功能的详细介绍拖拽功能是现代用户界面设计中常见的交互方式之一,它可以提高用户体验,增加操作的直观性。在 PyQt 中,我们可以很容易地实现控件之间的拖拽功能。本文将介绍如何在 PyQt 中实现控件的拖拽功能。

2024-03-28 20:21:39 2020 1

原创 【Hello,PyQt】QTextEdit和QSplider

之前的文章介绍了QLineEdit这个控件,它只能进行单行的文本编辑,而QTextEdit控件是可以多行文本编辑。

2024-03-26 16:09:28 526 2

原创 【Hello,PyQt】pyqt5中的QLineEdit控件

QLineEdit是PyQt5中的一个基本控件,主要用于接受用户的单行文本输入。除了基本的文本输入功能外,它还支持一些附加功能,包括回显模式、输入限制和验证、信号与槽机制等。

2024-03-15 21:40:48 1858 2

原创 【Hello,PyQt】pyqt5中的QLabel控件

QLabel 是 PyQt5 中的一个基本控件,主要用于在用户界面中显示静态文本或图像。它不仅可以用于简单的文本显示,还支持富文本、图像展示、超链接等功能。

2024-03-11 22:43:58 3173 2

原创 【Hello,PyQt】最简单的一些pyqt5程序

程序预览用于创建主窗口,管理应用程序的控制流,而是所有用户界面对象的基类。每个 PyQt5 应用都必须创建一个应用对象,即QApplication类的实例,这是任何PyQt5应用程序的起点。firstWin是实例化了的FirstMainWin类,并通过show()方法显示了主窗口。最后,通过sys.exit(app.exec_())进入应用程序的主事件循环,确保在用户关闭窗口时应用程序能够干净地退出。关闭窗口关闭一个窗口最直接的方式就是点击标题栏的那个叉,这个例子展示的是通过点击一个按钮关闭窗口

2024-03-10 22:06:21 1167 1

原创 【MySQL】查询语句:条件、排序和分页

MySQL 数据库使用SELECT语句来查询数据。一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符‘*’。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。

2024-02-27 15:53:31 1754 1

原创 【MySQL】探索表结构、数据类型和基本操作

数据库的E-R(entity-relationship,实体-关系)模型中有三个主要概念: 实体集 、 属性 、 关系集。一个实体集对应于数据库中的一个表,一个实体则对应于数据库表 中的一行,也称为一条记录。一个属性对应于数据库表中的一,也称为一个字段。如果现在有多条这种记录,那么就可以列成一张表,通过表来管理数据。下面是一个表的结构,每一行的数据都成为记录,那么每一列的内容都称为字段。每一列都有自己的数据类型。

2024-02-25 22:09:56 1229 1

原创 【图形学】投影和消隐简介

对于物体上任意一点的三维坐标P(x,y,z),投影后的三维坐标为P′x′y′z′,那么正交投影的方程为⎩⎨⎧​x′xy′yz′0​。

2024-02-07 22:58:31 1204 2

原创 【图形学】双三次贝塞尔曲线绘制方法

双三次贝塞尔曲面是由16个控制点定义的曲面,通常表示为4x4矩阵。puvi0∑3​j0∑3​Pij​Bi3​uBj3​vuv∈01×01其中,Pij​ij0123​是曲面上的16控制点;Bi3​u和Bj3​v⎩⎨⎧​B03​u1−u3B13​u3u1−u2B23​u3u21−uB33​uu3​⎩⎨⎧​。

2024-01-29 21:24:11 968 5

原创 【图形学】贝塞尔曲线理论与实践

给定n+1个控制点,则n次贝塞尔曲线的定义为pt∑i0nPiBintt∈01pti0∑n​Pi​Bin​tt∈01式子中BintB_{i,n}(t)Bin​t是贝塞尔基数,表达式为BintCniti1−tn−ii012...nBin​tCni​ti1−tn−ii012...n。

2024-01-26 15:08:17 2081

原创 【图形学】三维几何变换理论和实现

和二维几何变换一样,三维几何变换也要引入齐次坐标。点(x,y,z)的规范化齐次坐标为(x,y,z,1)。那么三维变换矩阵就是一个4*4的方阵。T​adgp​behq​cfir​lmns​​这个矩阵可以分为如下4个子矩阵T0​​adg​beh​cfi​​T1​​lmn​​T2​p​q​r​T3​s​其中T0​进行比例、旋转、对称、错切变换T1​进行平移变换,T2​。

2024-01-24 21:07:32 867

原创 【图形学】二维几何变换的一些理论和实现

一些概念齐次坐标是用n+1维向量表示n维向量,例如点P(x,y)的齐次化坐标为(wx,wy,w),w为任意不为0的数P(x,y)的齐次化坐标为(wx,wy,w),w为任意不为0的数P(x,y)的齐次化坐标为(wx,wy,w),w为任意不为0的数如果w取值为1,则称为规范化的齐次坐标。二维几何变换矩阵由于二维点的齐次坐标是一个包含三个元素的列向量,那么二维几何变换矩阵就应该是一个3*3的方阵。T=[abecdfpqs]T=\begin{bmatrix} a&b&e\\

2024-01-20 22:54:36 1079

原创 【图形学】颜色线性插值和Wu反走样算法

绘制一条颜色渐变的直线,直线上每一个点的颜色都来自端点颜色的线性插值。线性插值公式为P1−tPstart​tPend​P是直线上任意一个点,Pstart​是直线的起点,Pend​是直线的终点对应直线上任意一点的颜色有c1−tcstart​tcend​根据之前学的直线光栅化算法可知,绘制直线的时候是有主位移方向的,如果主位移方向是x,有x1−txstart​txend​。

2024-01-18 15:01:08 1353

数据结构C语言描述顺序表

顺序表初始化void Init(SeqList* psl); 检查空间,如果满了,进行增容void CheckCapacity(SeqList* psl); 顺序表尾插void PushBack(SeqList* psl,DateType x); 顺序表尾删void PopBack(SeqList* psl); 顺序表头插void PushFront(SeqList* psl, DateType x); 顺序表头删void PopFront(SeqList* psl); 顺序表查找int Find(SeqList* psl, DateType x); 顺序表在pos位置插入xvoid tInsert(SeqList* psl, size_t pos,DateType x); 顺序表删除pos位置的值void Erase(SeqList* p)void SeqListDestory(SeqList* psl); 打印顺序表void Print(SeqList* psl); 修改顺序表void SLModify(SeqList* psl, size_t pos, DateType x)

2023-08-12

C语言学习笔记基础数据类型

C语言学习笔记基础数据类型

2023-07-10

空空如也

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

TA关注的人

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