- 博客(34)
- 收藏
- 关注
原创 pycharm中配置pyqt5
PyQt和wxPython则提供了更多的控件和更强大的功能,适合于需要复杂用户界面的应用程序。pyQt生成的应用程序,引用图片通常是将资源文件装换为 python 文件,然后引用资源文件,而不能直接加载资源文件。找不到pyrcc5.exe. 将pyqt5和pyqt5-tools使用pip命令卸载,再使用pip命令重新下载,最终成功!环境变量费我2天时间,有人说这个路径,有人说那个路径,结果我都试了一遍…用来做UI的,只不过是直接通过Qt语言来进行UI设计的,同时,还支持拖拽式的UI设计。
2024-11-20 22:25:36
1109
1
原创 Matlab矩阵基础操作
F5运行脚本Crtl+N 新建脚本Crtl+R 注释代码Crtl+T 取消注释clear命令:清空工作区;clc命令:清空命令行MATLAB常用变量类型:数值、字符和字符串及矩阵。
2024-08-25 13:49:24
1456
原创 最后一个石头重量 &&目标和 && 一和零 DAY23
有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。如果x == y,那么两块石头都会被完全粉碎;如果x!= y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回0。
2024-07-31 09:34:54
757
原创 二维01背包 && 背包滚动数组 && 分割等和子集 DAY22
不理解dp数组中 容量1 2 3 4这样的含义。不应该是背包的固定容量与物品的质量进行比较嘛?应该是背包容量从0开始,慢慢变大,对应每个不同容量的情况取得最大价值,直到容量遍历到题目中的容量为止。本质上还是由先前状态推出当前状态:背包空间为N ,为了得到最优解, 先计算计算当背包空间为0 1 2 3 4…时的最优解 ,递推出背包空间为N时候的最优解。每个物品只有取与不取两种状态,所以叫01背包问题。在一维dp数组中,dp[j]表示:容量为j的背包,所背的物品价值可以最大为dp[j]。
2024-07-29 21:47:46
927
原创 DP 整数拆分&不同的二叉搜索树 DAY21
没完全消化,特别是递推公式…我觉得是,另外还需要取最大值如何理解?//为什么是n + 1?//初始化dp[2] = 1;i <= n;j++){这道题想到用动规的方法来解决,就不太好想,需要举例,画图,分析,才能找到递推的关系。
2024-07-25 10:07:56
1027
原创 DP 不同路径-DAY20
维护的是一个二维DP数组。可以用滚动数组进行降维。回顾深度遍历,二叉树的深度与节点个数间的关系:满二叉树节点数2^h - 1;
2024-07-24 09:03:01
728
原创 动态规划基础 18Day
从递推公式dp[i] = dp[i - 1] + dp[i - 2];唯一的区别是,没有讨论dp[0]应该是什么,因为dp[0]在本题没有意义!F(n) = F(n - 1) + F(n - 2),其中 n > 1。2.递推公式:F(n) = F(n -1) + F(n - 2);所以dp[i] = dp[i - 1] + dp[i - 2]。那么dp[i]就是 dp[i - 1]与dp[i - 2]之和!3.dp数组的初始化:F(0) = 1,F(2) = 1;给定 n ,请计算 F(n)。
2024-07-12 11:16:05
271
原创 图形对象句柄及属性对象句柄
句柄引用图形对象的具体实例。使用对象句柄设置和查询对象属性的值。对象的句柄值,类似于编程时的引用,将对象的句柄值赋值给变量后,该变量就可以代表指定的绘图对象。当创建图形对象时,可以将对象的句柄保存到变量中。注意:句柄变量是对象。不要尝试对句柄执行将句柄转换为数值、字符或其他类型的操作。
2024-07-02 17:13:03
322
原创 DAY17 平衡二叉树&二叉树所有路径&左叶子之和
1.求二叉树深度 和 二叉树高度的差异,求深度适合用前序遍历,而求高度适合用后序遍历。2.迭代法没太理解: 通过栈模拟的后序遍历找每一个节点的高度?3.递归法:对于空节点返回0;对于高度差超过1返回-1;否则就返回当前节点的最大高度。最后判断返回根节点的值是-1,还是最大高度,进行判断true或false。1.**可以感受出来,如果把作为函数参数就是可以的,因为并没有改变path的数值,执行完递归函数之后,path依然是之前的数值(相当于回溯了)**在第一个版本中,函数参数我就使用了引用,即。
2024-04-03 11:49:57
906
1
原创 DAY16 二叉树最大深度&最小深度&完全二叉树节点个数
1.使用前序(中左右),这样是从上往下,就是深度的概念。2.也可以使用后序遍历(左右中),这样就是从下往上,就是高度的概念。使用前序求的就是深度,使用后序求的是高度。递归法始终不是很会,层序遍历容易理解点。1.什么是最小深度?什么是叶子节点?根节点到叶子节点的最短距离。左右子节点都为空的节点就是叶子节点。2.后序遍历,左右中,就是从下往上,求的是高度,每次把结果返回给父节点, 最大高度 = 最大深度。前序遍历,中左右,就是从上往下,求的是深度。1.又熟悉了完全二叉树、满二叉树的定义。
2024-03-30 16:14:24
1111
原创 DAY 15补 对称二叉树
1.如何同时遍历两个二叉树?在迭代法,添加左右节点的左、右节点进一个队列、栈、或数组中存储,每次成对取出来判断。2.对于二叉树是否对称,要比较的是根节点的左子树与右子树是不是相互翻转的,其实要比较的是两个树(即根节点的左右子树)
2024-03-19 01:01:38
883
原创 DAY 15 二叉树层序遍历 & 翻转二叉树
1.用size记录每层的节点数量,因为queue中会包含上下层的节点,通过size记录的值可以确定队列弹出的元素是属于同一层的。2.返回的是一个二维数组。每一层的节点都用一个数组来存储,这层遍历完了后再添加进二维数组中。3.每次访问某一层的节点时,都会将节点的左右孩子添加进队列(若不为空)。4.二叉树中,广度优先搜索的数据结构用队列;深度优先优先搜索的数据结构用队列。二叉树的层序遍历,就是图论中的广度优先搜索在二叉树中的应用,需要借助队列来实现(此时又发现队列的一个应用了)。
2024-03-15 00:21:55
757
1
原创 DAY14二叉树迭代遍历
1.前序遍历中访问节点(遍历节点)和处理节点(将元素放进result数组中)可以同步处理,但是中序就无法做到同步!2.迭代的时候,包括了遍历、处理两个步骤,遍历就是在访问元素;处理就是添加进返回的数组result数组中。3.用栈来做存储节点的数据结构,先进后出,每次添加进result数组时,都是栈顶元素,然后pop()。
2024-03-13 00:42:55
422
原创 DAY 12滑动串口最大值【单调队列】 & 前K个高频元素【优先级队列】
1.用i - k来确定移动窗口最左边的元素。2.MultiSet、set都是有序的,所以插入元素时会自动排序,然后通过rbegin()返回最大的元素值。3.底层都是deque双端队列实现的,可以在头部和尾部进行插入和删除操作;deque是可以两边扩展的,而且deque里元素并不是严格的连续分布的。通过和分别在尾部和头部插入元素。通过size()函数获取deque的大小,通过front()和back()函数获取头部和尾部元素。使用pop_back()和分别删除尾部和头部元素。最后,通过。
2024-03-06 17:16:02
1028
原创 DAY 11有效括号& 删除字符串中的相邻重复项 & 逆波兰表达式
1.括号匹配是使用栈解决的经典问题。由于栈结构的特殊性,非常适合做对称匹配类的题目。匹配问题都是栈的强项2.在入栈的时候就进行了判断应该入的是括号右边的哪个符号:“}” “]” “)”;方便后面做比较。1.string字符串的尾部添加、删除元素操作2.没思路,但看了后又比较简单。最初想用双指针来做,就比较复杂。class Solution {//双指针// 直接用fast指针覆盖slow指针的值// 遇到前后相同值的,就跳过,即slow指针后退一步,下次循环就可以直接被覆盖掉了。
2024-03-05 15:12:44
904
原创 DAY 10 用栈实现队列 && 用队列实现栈
1.STL中,C++中的stack、queue 是容器么?不是,而是归类为容器适配器。二者能由其他容器实现底层结构2.stack、queue 都不提供迭代器,不允许有遍历行为。3.stack、queue 都默认用deque实现底层结构。4.std::deque(双端队列)是一个动态数组,允许在两端进行高效地插入和删除操作。std::deque允许在队列的两端进行插入和删除操作。这意味着在队列的前端和后端都可以快速地插入和删除元素,使得它比更适合需要频繁在两端进行操作的情况。std::deque。
2024-03-04 12:53:05
882
1
原创 DAY9 实现strSTR()&& 重复子字符串
说到KMP,先说一下KMP这个名字是怎么来的,为什么叫做KMP呢。因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMPnext数组就是一个前缀表(prefix table)前缀表有什么作用呢?前缀表里,统计了各个位置为终点字符串的最长相同前后缀的长度。前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。
2024-03-04 09:49:26
589
1
原创 DAY8 反转字符串&反转字符串II&替换数字&翻转字符串里的单词&右旋字符串
1.库函数不是考察点时可以使用2.swap()的两种实现:1.中间变量 2. 位运算^=是异或赋值运算符,它将左操作数与右操作数进行异或运算,并将结果赋值给左操作数。1.通过 i + k 与 size()进行比较,看看剩余元素是否比k 大或小;2.熟悉reverse();C++库函数以左闭右开原则;而swap()是交换两个元素。每次遍历,i += (2 * k);1.通过来判断字符串里是否有数字2.通过来改变字符串大小3.先预先给数组扩容带填充后的大小,然后在从后向前进行操作赋值【双指针】。
2024-03-01 08:48:44
1138
1
原创 DAY7 四数相加&赎金信&三数之和&四数之和
1.map[a + b]++ 会将 map 中键为 a + b 的值增加1。如果该键不存在,则会先插入一个新的键值对,再将值设为1。2.auto是一个 C++11 引入的关键字,用于自动推断变量的类型。这里iter的类型会自动推断为合适的迭代器类型,用于遍历的键值对。3.:两两数组之和,简化为两数之和。//a+b的次数基础之上++;1.没有什么思路,看完题解后理解的不够深入。2.对于a的去重操作很细节,判断后面与判断前面之分,逻辑效果不同。不能有重复的三元组,但三元组内的元素是可以重复!
2024-02-28 10:19:26
1024
1
原创 DAY5 有效的字母异位词&两个数组的交集&快乐数&两数之和
1.当我们要使用集合来解决哈希问题的时候,优先使用unordered_set,因为它的查询和增删效率是最优的,如果需要集合是有序的,那么就用set,如果要求不仅有序还要有重复数据的话,那么就用multiset。2.map 是一个key value 的数据结构,map中,对key是有限制,对value没有限制的,因为key的存储方式使用红黑树实现的。
2024-02-26 20:27:41
967
1
原创 DAY4两两交换链表中的节点&删除链表的倒数第N个节点&链表相交&环形链表II
1.倒数第几个问题,应用双指针思想,就像移动固定的一段长度。1.将**短的链表和长的链表从尾端对齐**,因为如果两个链表从某个点开始相交,则表示后面的一整串都相交,那么尾端对齐后再比较前一个节点的next指向是否一致就行了。和 swap (curA, curB);来处理B>A的情况。而不用写两次遍历比较。默认A>B的情况。lengthA 没被显式地初始化为0;1.快慢指针相对速度为1个单位,类似追及问题;2.以一个单位的速度差,快慢指针必定会在环内相遇。
2024-02-25 21:58:27
1386
1
原创 DAY3 移除链表元素&涉及链表&反转链表
1.学习单链表定义、创建连续链表、遍历链表基本操作2.需要一个中间变量来依次判断并更新中间变量,来遍历链表【用头节点遍历的话,最后返回的已经不是真正的头节点了】;并且要判断curr.next是否为null;3.关于释放内存的操作有点模糊。delete tmp;//这段代码首先将头节点保存在临时变量tmp中,然后将头指针head指向下一个节点,最后使用delete释放临时变量tmp指向的节点的内存。删除链表的头节点之后,应该检查head是否为nullptr,以确保链表是否为空。
2024-02-23 22:37:11
1259
1
原创 DAY2 有序数组平方&长度最小数组&螺旋矩阵
1.从两端的入手比较大小,意味着比较的时候是从较大的值开始比较2.比较后,将较大值从大到小的顺序给到新数组3.else中就包含了等于的情况1.外层为向右扩展的大循环,那for循环就代表终止位置,内循环是缩小窗口的,就代表起始位置;2.内循环缩小窗口时,需要用while进行循环判断;3.窗口缩小后要更新sum,且起始位置+1;
2024-02-22 13:59:29
1707
1
原创 DAY1 二分查找&移除元素
根据定义区间,确定循环不变量规则。然后在左右区间中,更新left与right。根据4种情况,利用middle和right的值作为返回值,根据区间定义不同,判断right是否+1;
2024-02-21 14:03:23
2249
原创 关于螺旋矩阵||
给定一个正整数 `n`,生成一个包含 1 到 `n^2` 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
2024-01-19 09:49:09
439
1
原创 最小覆盖字串
在滑动窗口类型的问题中都会有两个指针,一个用于「延伸」现有窗口的r指针,和一个用于「收缩」窗口的 l指针。在任意时刻,只有一个指针运动,而另一个保持静止。我们在 s上滑动窗口,通过移动r指针不断扩张窗口。每一个字符元素转换为ASCII码,对应各元素。以及一个需要的map集合来代表动态窗口的字符元素、个数;中重复字符,我们寻找的子字符串中该字符数量必须不少于。中存在这样的子串,我们保证它是唯一的答案。最小覆盖字串就是在左指针移动过程中出现的。所有字符的子串,则返回空字符串。所有字符的最小子串。
2024-01-10 09:24:32
512
2
原创 关于只包含两种元素的最长子序列
树由整数数组`fruits`表示,其中水果`[i]`是第`i`棵树产生的水果类型。但是,所有者有一些严格的规则,您必须遵守: 你只有两个篮子,每个篮子只能装一种水果。从您选择的任何一棵树开始,您必须在向右移动时从每棵树(包括起始树)中恰好摘下一个水果,摘下的水果必须放在你的一个篮子里。一旦你到了一棵树上,树上的果实没法放入你的篮子(两个篮子已经满了),你必须停下来。本题,其实就是选只有两个元素的最长连续子序列,比如1,2,3,2,2最长就是2,3,2,2(只包括2或者3,而且是最长的)。
2024-01-05 10:22:10
466
1
原创 关于长度最小数组
找出该数组中满足其总和大于等于 `target` 的长度最小的 **连续子数组** `[numsl, numsl+1, ..., numsr-1, numsr]` ,并返回其长度。在移动终止位置的时候,初始位置是不可逆的,初始位置只可能往后移动,而不用每次都从第零个元素开始。在移动终止位置的时候,初始位置是不可逆的,初始位置只可能往后移动,而不用每次都从第零个元素开始。输入:target = 7, nums = [2,3,1,2,4,3]解释:子数组 [4,3] 是该条件下的长度最小的子数组。
2024-01-04 10:28:36
356
1
原创 关于有序数组平方
快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据要小,再按这种方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,使整个数据变成有序序列。每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。
2024-01-02 23:08:03
384
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人