自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 pta 7-4制作评分器

制作评分器只用到了一个类,反正过了就行7-4 制作评分器分数 50全屏浏览切换布局作者 jolie单位 佳木斯大学本题目要编写一个评分器。创建考试后,当输入做题总数和错题数时自动求出分数代码中包含两个类,分别是:1、父类Grade负责将成绩分成级别,如,A:100-90;B:89-80;C:79-70;D:69-60;F:低于60分私有成员:字符变量letter---- 表示成绩的级别,如‘A’、‘B’等单精度浮点变量score---表示真实分数。

2024-04-03 11:12:35 1178 1

原创 PTA6-4 计算两点之间距离(友元函数)

输出两个点p1和p2之间的距离,要求输出结果必须保留两位小数。其中p1和p2都是用户传入的参数。函数须计算p1和p2的距离并输出,要求输出结果必须保留两位小数。

2024-03-27 10:43:45 1855

原创 关于C++this指针

那么肯定会好奇,this作为一个指针,他到底的指向是什么呢,哈哈,其实大家应该都知道,指向的肯定是当前类的空间,不然怎么去访问类内的成员呢。总所周知,指针类型在C++/C中占据的内存是四个字节,那么this作为一个指针,是否也是占用四个字节呢,此时定义一个类对象有一个int类型的值,如果this指针也占据类内的空间,那么sizeof(class)就是8,但是如果去写的话就会发现,此时类的size是4,所以this指针是不占据类对象的内存的。如果此时需要传入指针的话,那么传入的是什么指针呢?

2024-03-16 22:25:58 421 1

原创 关于TortoiseGit删除分支的操作

进去之后是这样的界面,但是此时该分支没有同步到仓库上去,同步到仓库上去的话就直接在分支栏选中你新建的那个分支,然后切换至该分支下(此时需要做的操作就是再点进去,然后push,将该仓库推送到你的仓库中去),以下就默认你将没用的分支推送到仓库中去了,然后需要删除。然后就可以点击删除了,接下来就是确认删除的操作,但是需要看清楚分支的结构,此时删除的只是你目前仓库的本地分支(意思差不多),如果此时点进去你自己的仓库还是保留有该分支的,所以需要点击该页面的remote,删除你保存在仓库中的远程分支。

2024-03-16 10:54:38 1171 1

原创 Leetcode 34.在排序数组中查找元素的第一个和最后一个位置

对于我之前在做二分查找类题目的时候,改变条件的时候老是将左/右指针直接变化为mid的位置上,事实上,如果当mid位置上的元素不等于target的时候,mid位置上的元素就属于一个已知状态,可以直接舍去这个位置的值,直接将left/right = mid-1/+1,这样子循环结束的条件就可以不需要很麻烦的判断,且所有可能的元素都能够在这个过程中被遍历到。请你找出给定目标值在数组中的开始位置和结束位置。你必须设计并实现时间复杂度为。

2024-03-02 21:15:00 381 1

原创 Leetcode 524.通过删除字母匹配到字典里最长的单词

对于刚看到题目其实我一开始的想法是先解决字符串匹配的问题,想到用双指针sp(表示指向sp的指针)和dp(表示对应dic的指针),分别对s串和dic串中的某个元素进行判断,当相等的时候就两个指针都++,不相等的时候就只加s串的指针,表示删除s串中的元素,然后继续进行匹配,当成功匹配的时候,即dp指针的大小和当前dic串的长度一样的时候,表示匹配成功,否则表示匹配失败。输入:s = "abpcplea", dictionary = ["ale","apple","monkey","plea"]

2024-03-01 21:30:00 364

原创 Leetcode 69.X的平方根

题目要求用二分法,但是此时m的平方不一定会刚好等于目标数字,所以需要进行双层判断,即如果当前的m平方小于x且(m+1)的平方大于x,则表示此时x的开根号取整部分刚好为m,此时返回m就行,但是此时有个问题就是m一开始为x/2,当x很大的时候他的平方根肯定很大,所以此时将他们都设置为long类型以防止符号溢出,然后看了Leetcode的官方解题有的是用double双精度浮点小数类型来解题的,也能够算出,而且运行时间还更少,搞不太清楚是为什么,如果有知道的欢迎指正交流,谢谢大家。以上代码思路仅限个人思路,如

2024-03-01 19:45:00 327

原创 Leetcode 680.验证回文串

但是此时会陷入局部最优解,比如如果此时字符串是abquuauuquba,对于这个字符串,从左向右判断,也就是在else条件中先判断left+1是否等于right的话,是等于的情况,所以会将左边的q删除,但是实际情况是应该删除右边的u才能得到最好的解,所以需要将else里面的条件改为right-1是否等于left再来判断一次,才能够避免陷入局部最优解。请你判断 s 是否能成为回文字符串:如果能,返回 true;输入:s = "abca"输入:s = "aba"输入:s = "abc"

2024-02-29 21:45:00 340

原创 Leetcode 142.环形链表

当两者相遇的时候,则表示他们之间必定有环,设整个链表长度为a(既是结点数也是链条数)环的长度为b(环的长度也包括走到最后结点重新指向进入环结点那条线),不在环的长度为c,当两者相遇的时候,因为q的步长数q的两倍,所以此时q走的步数qstep = 2*pstep,且此时q一定走过了至少一个环,假设此时是走过一个环的情况,那么就有,qstep = b + pstep。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。输出:返回索引为 1 的链表节点。

2024-02-29 20:15:00 378

原创 Leetcode 88.合并两个有序数组

所以我有另一种想法就是将第一个数组指针上的元素和第二个数组指针对应的元素比较,如果第一指针1指向的元素小那么就指针1++,如果第二个指针指向的元素小,那么就将指针2指向的元素和指针1的元素互换,然后继续执行循环,left再++,但是像这样的话又考虑不了交换的nums1原来的元素和nums2后面的元素大小,放置的位置又有问题,且right指针在这个过程中一直不变,导致有很多细节上的问题出现。输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。

2024-02-28 21:15:00 327 1

原创 Leetcode 633.平方数之和

但是如果设置一个中间变量flag初始化为false,当while循环里进入else,就将flag设置为true,然后break退出循环,再将flag给return给函数返回值,此时的时间为0ms。的思路一样,只不过将数组的元素换成了整数的平方,解题思路和想法以及为什么没有信息损耗都是一样的解释,但是唯一要注意的问题就是代码中符号溢出的问题,当输入的数数字非常大时,右指针肯动不会出现该情况,左指针也不会,就是左指针和右指针相加的时候会导致符号溢出,所以要将num和l或者r设置为long型的元素。

2024-02-27 23:15:00 298

原创 Leetcode 665.非递减数列

我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。解释: 你可以通过把第一个 4 变成 1 来使得它成为一个非递减数列。解释: 你不能在只改变一个元素的情况下将其变为非递减数列。输入: nums = [4,2,3]输入: nums = [4,2,1]

2024-02-26 19:45:00 351 1

原创 Leetcode 763.划分字母区间

我的想法是,创建一个字符串fs来保存当前遍历到的字母,然后再对fs里面的字母进行遍历,当fs中的所有字母都不在后续的s串中出现的时候,当前的字母组成个数可以是一个最小的字母区间,且每遍历一个字母,需要判断该字母是否在fs中是否有,如果有的话,那么就不做改变,如果没有的话就将该字母push_back进入字符串,最坏时间复杂度应该是O(n²)。像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。输入:s = "eccbbbbdec"输出:[9,7,8]

2024-02-25 21:45:00 327

原创 Leetcode 167.两数之和Ⅱ-输入有序数组

因为题目已经给了数组是有序的,所以可以直接利用该条件,寻找目标值target,将right设置为数组长度-1也就是最右端的值,left设置为数组的初始值0,先对当前状态进行判断,如果当前数组下标left和right的和小于target,说明值小了,表示数组的left需要像右移,就可以增大numbers[left]+number[right]的值以来满足增大从而达到像target值靠拢的目的。又因为数组是从1开始的,所以left和right都需要++

2024-02-25 16:58:01 396

原创 Leetcode 452.用最少数量的箭引爆气球

墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。输入:points = [[10,16],[2,8],[1,6],[7,12]]输入:points = [[1,2],[3,4],[5,6],[7,8]]输入:points = [[1,2],[2,3],[3,4],[4,5]]- 在x = 2处发射箭,击破气球[1,2]和[2,3]。-在x = 6处射出箭,击破气球[2,8]和[1,6]。

2024-02-24 21:00:00 366 1

原创 Leetcode 435.无重叠区间

说说我自己一开始的思路,先将所有数组按照第一个元素,也就是起始区间左端点的位置大小来进行排序,再用一个变量num来记录此时对应的最小区间右端点的位置是多少(因为需要考虑的是移除最少的区间,所以是求当前所有相同左端点的最小右端点,即区间长度最小值),然后通过对数组进行遍历,如果是和原来数组重叠的区间,那么就舍去(也就是变量count++),否则的话就直接跳过,然后将新的右端点重新赋值为num。输入: intervals = [[1,2],[2,3],[3,4],[1,3]]

2024-02-23 23:21:29 314 1

原创 Leetcode 135.分发糖果

其实这里我并不是很明白为什么对数组进行两次循环的判断就好了,这个代码不是我自己写的,我个人对这个代码进行分析是,刚开始当考虑只右侧的人比左侧的人多的情况,然后再从右往左考虑一遍,不明白是怎么想先到这个思路的,如果是遍历一遍数组的时候,当右边大于左边时,右侧+1,那么当右边不大于左边的话是不是左边可以进行一个+1操作,但是如果此时左边又进行了一次+1操作的话,那么左边的左边是否又需要进行变换,这样的话就牵扯到了所有前面的元素,所以先整体从左往右考虑一次,然后再从右往左遍历一次,这样子就可以避免那种连锁反应。

2024-02-23 23:00:34 407

原创 Leetcode 445.分发饼干

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;对每个孩子和不同孩子的胃口进行考虑,可以考虑从小往大满足,首先都需要先对两个数组进行排序,也可以先用最大的饼干来满足相应胃口的孩子,如果不能满足,那么就判断能否满足下一个孩子的胃口。虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。输入: g = [1,2,3], s = [1,1]

2024-02-23 22:47:04 332

原创 Leetcode-9.回文数

2:看了Leetcode上的解题,有个方法很好,就是将sum只判断一半的数字然后再和前面一半的x进行比较,这样如果sum是int类型的话就不会有溢出的情况了,但是还需要加一个判断方式,就是如果位数是奇数的话,那么中间那一位是不需要看的,一定是对称的,所以将奇数的那一位除去也行,加上也行,也就是下面这段代码。4:用python的str转换可以更简单的实现,其中可以用我在网上查到的循环反向迭代法,也可以将str转换为列表,然后再用列表的reverse方法逆置,最后判断两个是否相等,例如下图。

2023-11-05 15:07:57 47 1

空空如也

空空如也

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

TA关注的人

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