- 博客(75)
- 收藏
- 关注
原创 代码随想录之平衡二叉树
如果左右子节点对应的子树有一个不是平衡二叉树就一直-1返回到头了。本题思路是针对高度,只不过是判断高度之差的绝对值是否大于1罢了,只有全是平衡二叉树时才正常运行完。
2023-04-23 21:05:15 111
原创 代码随想录之有多少小于当前数字的数字
1.为什么hash的大小是101,因为nums[i]的大小最大为100。2.首先排序,排序后其下标就代表有多少个比它大的数。4.最后再根据nums数组的数的位置映射回去。3.如果出现重复的,
2023-04-21 00:03:37 32
原创 力扣专题之丑数
因此定义一个2,3,5的vector,当n%2/3/5可以除尽时,就一直除,一直把2/3/5都除了最后比较n是否为1,不为1不是丑数。选取3个指针分别表示现在乘了几个2/3/5,将dp[i]取为最小的num,更新指针。
2023-04-08 21:19:18 72
原创 代码之整数拆分
因为在遍历时,在遍历j时,比如i=3,那么j从1到2,j=1时,记录了拆除j=1的最大值,那么到j=2时,怎么比较拆除j=2的值比拆除j=1的时的最大值谁大谁小呢,而每轮的最大值正好保存到了dp[i]中,那么必须每轮加上对dp[i]的比较。2.递推公式:dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));拆为2个数乘积为(i - j) * j或者多个数dp[i - j] * j。1.dp数组的含义:分拆数字i,可以得到的最大乘积为dp[i]。
2023-04-01 00:21:08 116
原创 力扣专题之区间问题
本区间问题属于贪心算法解法本类问题的一般步骤1.(使用cmp),一般按左边界排序2.将结果为1或者将第一个元素放入结果集中,因为遍历比较的是i和i-1,需要3.。4.根据具体题目条件。
2023-03-31 13:39:23 136
原创 贪心之划分字母区间
本题对字符串划分区间,同一个字母只能出现在一个区间内。3.遍历更新right为right和当前字母的最大位置。2.left和right统计左右边界的位置。4.区间分割点为i == right。1.首先统计每个字母出现的最远位置。
2023-03-31 10:47:18 28
原创 代码之用最少数量的箭引爆气球
4.重叠了当此时的(后一个)弓箭的右边界更新为前一个和后一个的右边界的最小值。不重叠则需要多一个弓箭来射。3.循环,如果后一个弓箭的左边界大于前一个弓箭的右边界证明二者不重叠,相反是小于等于,重叠。2.起始的弓箭数为1,因为第一个气球需要1个弓箭。本题目本质是找到重叠的区间。1.按区间左边界进行排序。
2023-03-31 00:00:45 71
原创 代码之根据身高重建队列
本题有2个维度,一个是身高,一个是排在前面的人数,与分发糖果一样有2个维度,只能是先固定一个维度再去考虑另一个维度,不能两个同时考虑。2.遍历people数组,得到每一个people元素的k值people[i][1]3.将每一个people元素插入到que数组中。1.按身高从大到小,k值从小到大排序。
2023-03-30 23:07:53 62
原创 贪心之柠檬水找零
2.走循环,遇到10就找零5,没有5直接失败。贪心体现在遇到20优先找零10和5,没有10再找3个5,其他情况失败。1.定义3个变量分别统计5,10,20的钞票数。3.走完循环返回成功。
2023-03-30 21:54:06 32
原创 贪心之分发糖果
2.从左往右,如果ratings[i]大于ratings[i-1],那么ratings大的人得到的糖果要比ratings小的人得到的糖果+1。i从1开始是因为有i-1。3.从右往左遍历,同理,同时取从左往右值的一个最大值,i从ratings.size() -2 开始遍历是因为有i+1。1.初始化candy数组,至少每个孩子1个糖果全部初始化为1。4.for循环收集结果。
2023-03-30 21:18:18 26
原创 代码随想录二分查找
左闭右闭,说明二者最后会出现相等的情况,不能忽视left == right的情况。右开说明不会出现left == right的情况。一,左闭右闭[left, right]二,左闭右开[left, right)
2023-03-30 20:13:20 36
原创 C++基础之运算符重载(3)递增
2.二者返回值的区别:前置++重载函数使用引用返回是为了保证应该修改的对象修改了。而后置++重载函数在函数体内创建了一个临时对象temp,出函数体立刻销毁temp,返回temp的引用会出错,因此不能返回引用而返回一个temp的拷贝。1.使用占位参数解决前置++重载函数和后置++重载函数一致的问题。3.重载
2023-03-22 16:35:02 70
原创 C++基础之友元(3)友元成员函数
1.友元关系不能被继承,类A是类B的朋友,类C是类A的儿子,类C就不是类B的朋友。3.友元关系不具有传递性。类B是类A的朋友,类C是类B的朋友,但是类C。2.友元关系是单向的,类A是类B的朋友,但是类B不一定是类A的朋友。不一定是类A的朋友。
2023-03-21 21:19:33 46
原创 C++基础之友元(2)友元类
2.虽然声明了Building类但编译器仍不知道building对象里面有哪些成员,如下会报错,解决方法是声明和对象分开。1.直接使用Building类而上面未声明Building类。在类外访问一个类的私有成员。完成错误解决之后可访问。
2023-03-21 16:54:44 38
原创 C++基础之常函数与常对象
1.this指针的本质为一个指针常量(无法改变指向的指针),2.如果想让this指针指向的对象的内容不能被修改,const Person* const this;3.系统使用在函数参数列表后面大括号前面加关键字const相当于const Person* const this;
2023-03-21 15:28:44 63
原创 C++基础之this指针
1.this指针指向用来调用成员函数的对象,谁(哪个对象)调用该方法,this指针就指向谁(哪个对象)。2.在类的非静态的成员方法中返回对象本身,可以使用return *this。1.当形参和成员变量同名时,可以用this指针来区分。2.this被作为隐式参数传递给方法,每一个。的成员方法中都有this指针。
2023-03-20 22:55:28 31
原创 C++基础之单例设计模式
2.懒汉式:先初始化静态实例为nullptr,调用getInstance方法时如果发现为空指针则创建对象,否则直接返回创建好的对象。1.饿汉式:不管调用不调用getInstance方法,该静态实例在编译阶段已经存在。单例:单个实例(对象),创建一个对象,实例化一个对象,创建一个类的实例。2.私有化声明一个静态的实例(私有的目的是防止外界通过类名直接访问)3.公有化一个getInstance方法返回对象指针。单例的好处:防止创建过多的对象,节省内存。设计模式:程序员的经验总结。4.类外定义静态的实例。
2023-03-20 22:36:21 25
原创 C++基础之静态成员
1.静态的成员函数不能访问非静态的成员变量,可以访问静态的成员变量。因为静态成员函数在编译时就产生了(分配了内存),而普通的成员变量在对象创建时才分配内存,因此无法访问。2.普通的函数可以访问静态成员变量也可以访问非静态成员变量,成员函数。2.静态成员变量不属于某个对象,而是属于类,所有对象共享。在成员前加static关键字可以使成员变成静态成员。3.静态成员变量可以通过类名或者对象名的方式来获取。因此静态成员包括静态成员变量和静态成员方法。C++类中的成员指的是成员变量和成员方法。
2023-03-19 19:44:58 51
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人