自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客网Sum of Suffix Sums

遇到2,则删除后两位,数组为[1,100000],后缀和为[1+100000,100000],值为1+100000+100000,数组长度为2。遇到0,数组为[1,3,6],后缀和为[1+3+6,3+6,6],值为1+3+3+6+6+6,数组长度为3。在第四次操作后,数组变为[1, 3, 6],后缀和数组为[10, 9, 6],后缀和之和为25。遇到1,则删除后一位为[1,3],后缀和为[1+3,3],值为1+3+3,数组长度为2。在第一次操作后,数组变为[1],后缀和数组为[1],后缀和之和为1。

2024-07-22 14:56:26 227 1

原创 验证回文串 力扣

我们先需要将里面除了数字和英文字符以外的字符去掉,用 ''.join(i for i in str if i.isalnum())如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。如果是数字或英文字符,我们i.isalnum()就将返回true,就可以将除了数字和英文的字符筛选出来。再用lower()函数将其变成小写,在进行字符串逆置判断,如果前后不相同,就返回false,并break。在移除非字母数字字符之后,s 是一个空字符串 ""。

2024-02-15 11:44:55 350 1

原创 python爬虫爬取渭南市一个月天气并可视化

我们点击查找我们想要的范围:本文我想要从23年12月1到31的天气,在源代码里找定位到蓝色区域,发现它是table.b,我们就找table,{"class":"b"},我们用information列表来存放天气数据。然后我们想要统计的是每行的数据,所以我们就要找能代表一整行的,我们发现在此网站上,tr一行一行表示。我们发现:td代表每一行中不同的列值,这样,我们就把要找的数据全部都找到了。我们点击网页,点击检查,查询我们想要提取的数据。现在我们要做的是将其可视化。我们需要爬取网站天气信息。

2024-01-23 18:26:08 635 1

原创 力扣数组中第k个最大元素

快排思路:选择第一个作为枢纽,选用双指针i,j,从右向左先进行遍历,如果第j个位置的元素值大于第一个枢纽值,那我们j--,用while循环继续从右向左进行,如果小于,那我们就要将i与j位置元素进行交换,从左向右进行遍历,那么i++,直到i与j相遇,说明,此时i所在的位置就为我们第一个枢纽的位置,这才是进行了第一场排序,我们采用递归的思想,将枢纽左边和右边的都进行快速排序,就为快排思想。思路:找到第k个最大值,那我们最先想到的是先排再找。请注意,你需要找的是数组排序后的第。个最大的元素,而不是第。

2024-01-19 18:44:44 434 1

原创 力扣 反转链表II

虚拟头结点 头结点 p:目的是找到left的前一个,q是找到第right个,我们让s指向p->next,即为我们想要先处理的数据,让p->next与s->next连接,s出来,s->next与q->next连接,q->next与s连接实现插入,那么s位置就挪到了q的后面,根据左与右之间的距离差来实现循环次数,即可完成逆置。1.如果left==right说明左与右相同,不需要进行逆转,则返回单链表head为头结点。2.如果不同,我们就需要虚拟一个新结点,让它指向头结点。

2024-01-14 14:21:54 377 1

原创 力扣383 赎金信

其次,我们遍历用两次for循环,遍历ransomNote,如果在magazine中找到相关构成字母,则将其count++,在将其值为空,确保唯一表示。如果最后从头遍历,每一个ransomNote中的字母都能在magazine找到,则返回true。我们先统计两个字符串的长度,因为第一个字符中的每一个字母都要求由第二个字符中的字母唯一进行表示,所以第一个字符串的长度应该小于等于第二个,如果大于,则一定返回false。

2024-01-13 22:41:17 296 1

原创 力扣189 轮转数组

例如:nums = [1,2,3,4,5,6,7] k=3 则先从末尾向前找三个 5,6,7逆置后为765。在从前进行逆置,1234逆置为4321,最后变成4321765在整体逆置,为5671234。向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100],将数组中的元素向右轮转。思路:用多次逆置函数。

2024-01-13 22:03:57 325 1

原创 力扣 LCR125 图书整理II

在输出操作时,我们需要判断,如果输入栈、输出栈均为空时,说明没有,我们返回-1。刚开始输出栈为空,我们就循环输入栈,将输入栈的栈顶元素压入到输出栈内,直到输入栈为空。我们最后在调用取栈顶函数,取出输出栈栈顶元素,并Pop。我们通过题目可知,要拿两个书车,所以我们借助两个栈来实现队列,一个栈用来记录输入值,另一个栈通过从输入栈顶端取值后放进置输出栈中,从输出栈中一个一个取栈顶元素即为队列的结果。我们定义一个队列,队列里有两个栈,输入输出栈。在向输入栈输内容时,我们就直接在队列的输入栈中调用Push函数。

2023-12-06 23:25:12 375 1

原创 力扣 删除有序数组中的重复项II

我们快指针进行的是从2之后的遍历,慢指针进行的是判断删除多于两个重复元素之后的位置,即我们要的数组大小,我们让数组从0开始,如果当前数组值不等于 nums[fast],就让此记录值nums[slow]=nums[fast],在让slow这个记录值向后移一个,直到遍历完。借助此思想,我们只需保留重复元素的两项,那我们直接让j = i+2,因为是有序数组,如果nums[j]==nums[i],说明nums[i+1]一定与之重复,只需 k=j ,将后序元素往前移。,返回删除后数组的新长度。

2023-12-05 22:44:06 1284 1

原创 力扣 删除排序链表中的重复元素 II

当p的下一个值不为空且下下一个值也不为空时,判断它下一个值与它下下一个值之间的关系,此例即1 和2 ,1和2不相同,我们就让p=p->next,继续向后进行遍历,2和3比又不相同,此时p移到了2的下面,然后发现3和3相同了,我们就把这个值3记录下来,p此时指向2的位置,我们要删除3,就让p->next=p->next->next,但是,有可能会跟着好几个三,所以我们要进行循环,依次删除,直到p->next->val不为我们记录的重复的值,遍历结束后,我们便可以返回s->next,即为我们想要的结果。

2023-12-02 20:38:25 356 1

原创 力扣 移动零 Python

在python中,我们把它看成列表,我们用for循环从头到尾遍历,遍历次数就为我们列表的长度,用到函数 len(nums) ,然后只要列表元素为0,我们就删除它,并在结尾追加一个0,这里用到的函数有 nums.remove(数据)将列表中该值删除掉,nums.append(数据)在末尾追加该数据。在python中,我们列表有非常多的函数,在这个题目里就可以用到。我们要移动零的位置,最终变成nums[1,3,12,0,0]例:nums=[0,1,0,3,12]空间复杂度:O(1)时间复杂度:O(n)

2023-11-29 20:23:05 347 1

原创 力扣 路径总和

如果根结点不为空,那我们判断它是否是叶子节点,是我们就判断它的数值与所给值是否相同,相同,我们就返回true,不同,返回false。思路:采取递归的思想,如果根结点为空,说明没有路径,则返回false。如果不是叶子节点,我们就判断它的左孩子或右孩子是否满足条件。不存在 sum = 5 的根节点到叶子节点的路径。由于树是空的,所以不存在根节点到叶子节点的路径。的路径,这条路径上所有节点值相加等于目标和。等于目标和的根节点到叶节点路径如上图所示。(1 --> 2): 和为 3。是指没有子节点的节点。

2023-11-25 20:48:05 391

原创 力扣 最长前缀 python

思路:我们先将a记作列表的第一个元素的第一个字母,即为f,然后i从1进行循环,后面的每个元素的第一个值即为strs[i][0]都与a进行比较,如果相同,我们让计数器m+1,如果后面的第一个元素都与a相同,m均加一,如果f为我们的前缀,则m的值应该为我们列表的总长度减一,如果是,我们家让字符串b加上我们的a。a=strs[0][1]='l' i 从1到2 strs[1][1]=l m=m+1=1 strs[2][0]=l m=m+1=2=len(strs)-1 b='f'+a='fl'

2023-11-25 17:53:48 472

原创 双指针 返回链表中倒数第k个节点

思路:双指针,起初,p=head,然后要返回倒数第几个,就让p先提前走几个,随后head和p同时走,直到p为空,则返回当前head指针,即为我们所要的值。cnt=1,p先走一个(与cnt有关),走到2,此时,p和head同时走,直到p走到空,此时head走到8的位置,返回指针head。的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第。时间复杂度:o(n)空间复杂度:o(1)

2023-11-18 17:32:38 40 1

原创 Linux vi编辑器

以就业为导向, 提供编程、运维、测试、云计算、大数据、数据库等全面的IT技术动手实践环境, 提供Linux、Python、Java、C语言、Node.js、Hadoop、PHP、Docker、Git、 R、SQL、MongoDB、Redis、Swift、Spark等千门热门课程。希望可以帮助到大家。错误很多,我们点击esc ,插入消失,此后我们为了返回到shell,一定要输入冒号,然后再输入wq,不输入冒号就无法返回,一定要输入冒号!点击enter,进入下个页面,点击i,就会变成插入模式。

2023-11-18 15:58:01 39 1

原创 力扣 最小栈

前几个对栈进行初始化、入栈、出栈、取栈顶元素都是我们非常熟悉的,但最后一个取栈中最小元素,如果题目没有限制为常数阶,那我们就可以定义一个min,来记录栈中元素的最小值,不过此方法需将栈中元素逐一与min进行比较,时间复杂度为线性阶,不符合题意,那我们就来定义一个辅助栈,只放入当前栈的最小值,此时辅助栈的栈顶元素就为我们栈中的最小值。在出栈操作中,如果当前栈中元素值与辅助站中元素值相同,说明都是最小值,都要pop出来,所以辅助栈的top值也要mintop--。--> 返回 -3.--> 返回 -2.

2023-11-18 15:05:00 33 1

原创 力扣 用两个栈实现队列 C

我们先定义栈,里面有一个数组,一个指针top,和最大承受能力值capacity,我们对栈进行初始化、入栈、出栈、判空、取栈顶、销毁栈操作,销毁栈时我们需要将数组free掉,此外,因为队列是先进先出,而栈是后进先出,要想用栈实现队列,我们需要定义两个栈,s1,s2。入栈时直接进栈s1,则执行push(obj->s1,x),出栈时我们要考虑出来的栈是否为空,如果为空,我们将栈s1里的栈顶元素压入s2中,最终pop,取最前面的值也就是取栈顶s2,销毁队列时,直接销毁两个栈就可以。

2023-11-08 21:43:16 45 1

原创 二叉树的中序遍历

此时p指向B的左孩子C,p不为空,则C进栈,p指向C的左孩子,左孩子为空,则p为空,退出循环,此时栈内有三个元素A,B,C,我们将其出栈并输出该结点,则为C,p指向C的右孩子,右孩子为空,我们继续将栈内元素输出,则输出结点B,此时p指向B的右孩子,右孩子为D,不为空,进入循环,则D进栈,p指向D的左孩子,D的左孩子为E,p不为空,则E进栈,此时,p指向E的左孩子,E的左孩子为空,则退出循环,将E的根输出,p指向E的右孩子为G,此时根结点不为空,则G进栈,p指向G的左孩子为空,退出循环,然后将其出栈。

2023-11-08 19:40:36 55

原创 力扣 多数元素 python

思路2:相当于是打擂操作,让列表中的第一个元素记为a,让后续元素与之进行比较,如果相同,让count+1(count记录)如果不同,相当于自动抵消一个,即count-1,如果count为零,说明当前的数已不是多数元素,a就变成列表的下一个元素。=a count=1-1=0 此时 a=nums[i+1]=nums[4]=1。=a count=1-1=0 此时a=nums[i+1]=nums[6]=2。i=6 nums[6]=2=a count=1 return a 所以多数元素为 a=2。

2023-11-04 17:55:01 58 1

原创 力扣(x的平方根) python

让左(l)为0,右(r)为x,一直找中间的数,如果中间的数(m)的平方大于x,说明此数大,右边就从中间减一,再次求解中间的值带入判断m^2与x之间的关系,一旦小于,我们用 i 将其记录下来,左边从中间加一,直到循环至左大于右结束。第一次循环:l=0,r=8,m=4 4*4=16>8 r=m-1=3 此时:l=0,r=3,满足循环条件,进行第二次循环。第二次循环:l=0,r=3,m=1 1*1=1

2023-11-04 16:43:26 145 3

空空如也

空空如也

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

TA关注的人

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