自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 队列的一些总结

这道题先进行排序后处理,开辟一个新的数组,根据k(在某某前面并且身高大于等于h的人数)来判断在新数组中放到前面还是后面,因为我们的数组里面大家身高都是倒序的且都比新遍历的元素大,所以新遍历的元素位置就是它的x[1](前面比他高的人),所以insert(p[1],value)[[7,0],[9,2],[2,3]],下述语句的意思是根据[7,0]中的7来倒序排序,根据[7,0]中的0来正序排序。首先是数对的队列,我做了406.根据身高重建队列。包括有序队列、双端队列、队列里面是数对的队列等等。

2023-07-19 18:27:51 55

原创 关于图论中的层序遍历bfs

迷宫入口最近出口的话,需要定义dx=[1,0,-1,0] dy=[0,1,0,-1]来提供一个单位矢量,我理解的思路是定义一个queue(用来存放要去的地方和走的路程)(like:queue=deque([(entrance[0],entrance[1],0)]))然后每走过一个地方都要把原来的地方定义为墙或者“-1”这样子防止再走回去。跳跃游戏是这样的,给一个arr=[4,2,3,0,3,1,2],start=5 然后问每一次能跳到i+arr[i] i-arr[i]两个index,问能不能跳到0那里?

2023-07-07 20:58:50 104 1

原创 字符串相关方法或者函数(常用!)

all()函数,all([c in digi for c in a0]),这里面如果有c不在digi里面,那么all返回的数值是False,如果所有元素都为真时,all返回True。s=''.join(list)使用join可以把数组合并成一个字符串,''中可以选定字符串连接的内容。ord('0')可以返回0的ASCII值,(ord(i)-ord('0'))可以计算得到i的数值。如果要去除其他内容,可以在s.strip('a')括号里面去加入需要去除的内容。s.count('a')计算a出现了多少次。

2023-07-01 22:27:47 58

原创 排序总结(快速排序、归并排序、堆排序)

(初始化哨兵位置) 2.初始化左右边界为 left, right,即设定从左到右的指针i,从右到左的指针j。3.将数组分为两份,比flag小的放左边,比flag大的放右边。左指针指向大于flag位置,右指针指向小于flag的位置,此时如果i仍然<=j,则交换左右指针下标对应的数值,然后 i(左指针),j(右指针)各走一步继续。5.外层调用quicksort函数,传入数组、数组0下标、数组尾下标(注意是len(nums)-1)如果 i<right,[i,right]作为右边的数组递归快排;

2023-06-29 15:58:43 74

原创 最大数和质因数分解(Leetcode.179&6266)

map(str,nums)的作用是把int转化成str,这里生成的是一个迭代器。接下来就是质因数分解,这块属于数学领域。def su(x):#判断是不是质数。

2023-06-25 21:36:20 192 1

原创 代码随想录算法训练营day24&day25&day27回溯法:组合问题

我先跳跃到回溯算法这块了。

2023-06-04 16:59:39 79

原创 代码随想录算法训练营day16

但是用栈的话就是前序遍历了(中左右),因为前序遍历使用栈的一些特性,所以如果单纯判断特殊条件满不满足的话(是否到达叶子节点),就只能判断左侧的节点,右侧的无法检测到。因此需要采用min()的方法,在满足叶子节点的情况下判断min(mindepth,depth),然后在最后返回mindepth。其次是二叉树的迭代遍历,其实就和迭代遍历一个路子,只不过不用存东西到result里面了。二叉树的深度问题,可以通过遍历获得,这道题非常适合用层序遍历方法。接下来是n叉树的最大深度,n叉树比较特别,其的定义是。

2023-05-31 16:23:13 40

原创 代码随想录算法训练营day15

level=[] #level负责存入每一层的节点,然后每一次while循环都输入到result中。Node=queue.popleft() #这里需要注意去设置一个指针。我觉得层序遍历需要注意因为输出端的结果结构[[1],[2,3],[4,5,6]]这样的,所以需要设置每层的一种level。二叉树的层序遍历是一种广度优先遍历,很有用的一种方法,层序遍历往往需要使用列表。这一天还是二叉树,主要有三部分。翻转二叉树可以使用递归很方便。

2023-05-30 22:39:23 33

原创 代码随想录算法训练营day14

第一部分主要是针对二叉树的定义来学习的,二叉树实际上可以理解成有左右方向的链表,拥有链式存储和线性存储两种方式,但是我们一般使用链式存储。二叉树的遍历也是十分重要的点,后面二叉树的相关题目很多就是围绕二叉树遍历来做的。第二部分就是二叉树的遍历实现,首先是递归遍历,递归的方法非常简单但是抽象。后序遍历,后序遍历可由前序遍历稍微修改得到,先改变左右的顺序,然后再翻转result即可。深度优先遍历就是前序遍历、中序遍历、后序遍历三种。第三部分是二叉树的迭代遍历:迭代遍历这里使用栈来做。广度优先遍历就是层序遍历。

2023-05-30 22:20:23 127 1

原创 代码随想录算法训练营day5

需要判断if num in val_dict.keys() and val_dict[num] == 1:主要就是判断有没有交集,有的话就ans.append(num),val_dict[num]=0把它置零。这题不难,有两种方法计算快乐数的sum,一种通过转str()后转int()再去sum,另一种是通过num//%10这样子去判断和使用余数。Counter能直接输出每个字母对应出现的次数,这个比较流氓,直接s_counter==t_counter就行。=0的,有的话就不是异位词,但是相反那就是异位词。

2023-05-15 20:54:33 42 1

原创 代码随想录算法训练营day4

这题一开始看代码有点迷糊,但是后面看视频后知道要先画图理清楚,需要设置三个指针pre、cur、post,然后在while中的思路是1、每次循环开始都要重新设置好pre、cur、post的位置 2、循环的后半部分根据指针指向设置语句 3、每次循环末尾要重置pre的位置pre.next=pre.next.next。其实这道题和设计链表中的删除节点比较相关,但是它没有直接给出链表的index,而是问倒数第几个节点。这个是day4的补打卡,在day4里面,我刷了几道链表的题目,对链表更加熟练了(真的)

2023-05-15 20:08:00 70

原创 代码随想录算法训练营day3

我认为需要注意的是cur.next!=None这种判断while结束的方式,同时我需要多熟悉链表的模式,现在看来对链表还不熟。这道题使用了虚拟链表表头的思想,去定义了一个dummy_head=ListNode(next=head)今天开始写链表了,但是因为时间问题只刷了第一题,剩下的明天或者周日搞完。链表适合插入和删除,但是链表的查询时间复杂度较高O(n)第一道题是203.移除链表元素。

2023-05-12 23:47:22 113

原创 代码随想录算法训练营day2

需要注意的是使用min()和max()函数,使用这些来对比什么是最大的什么是最小的,而且一般对比的时候要参加一个val变量,val=float("inf")为正无穷,如果用min就val=min(float("inf"),x),是max就用val=max(-float("inf"),x),因为是两个极限的情况,可以判断x是否存在。这里还需要一个中间变量k=n-1,用来指向存储数组的末尾处,然后ans[k]=lm这样子,每一次while循环k都减少一位。这一部分是数组的结尾,刷了三道题。

2023-05-11 22:56:36 50

原创 代码随想录算法训练营day1

这是第一次系统参加算法练习,希望能去在这其中做好锻炼,毕竟快秋招了(

2023-05-10 23:32:11 178

原创 Leetcode 27. 移除元素

我理解的流程是判断fast指向与val不同的值后就硬把值赋值给slow,然后slow和fast都去+1,如果fast指向和val一样的值后就单fast+1。首先是考虑循环啥时候结束,因为fast是快的那个指针,它到数组尾部的时候循环就结束了,可以用while fast

2023-05-10 22:50:25 107 1

原创 leetcode 704. 二分查找

二分查找比较简单,主要就是通过设置left和right,并且设置一个mid=left+(right-left)/2来判断mid和target差多少。还有一个很重要的事情是看target在什么样的区间里面,如果target在左闭右开区间,那么while处理的时候要left<right。注意在python当中,如果题目没有给出一个有序的数组,那么需要使用sort()函数来处理一下,sort默认是升序。

2023-05-06 19:38:15 111 1

原创 leetcode 59. 螺旋矩阵II

我理解画螺旋矩阵的步骤:按照n的情况建立一个空矩阵、后续开始按照顺序赋值(先设置一个大的for循环,设置偏移量。for i in range(starty,n-offset,-1): 最后的-1用来将方向取反。loop取n//2能把偶数的情况都包括进来,奇数的情况最后再用if n%2!我觉得在这道题目中,需要注意loop(迭代次数)和循环方向的一些细节。5//2结果是2,python是向下取整,5.9//2也是2。5%2结果是1,%是用来取商的。解答出处:代码随想录。

2023-05-06 19:01:00 150 1

原创 leetcode 904. 水果成篮学习记录

注:dictionary.get(key,default=None)其中key为查找的key,并且返回key对应的value,查找的key不存在时返回默认值。不断更新res #res = max/min (res, j-i+1) 注意这里用的是()不是[]这道题主要是使用滑动窗口来解决的,笔者是先做了leetcode 209再来做这道的,首先先收集一下这种滑动窗口的通法。209使用的是最小滑动窗口,要求是找出满足条件的最小长度的连续数组。904使用的是最大滑动窗口,要求是找出满足条件的最大长度连续数组。

2023-05-06 17:10:54 38 1

空空如也

空空如也

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

TA关注的人

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