- 博客(28)
- 收藏
- 关注
原创 python刷力扣347.前k个高频元素
使用字典的键储存nums,值储存nums出现的次数,构成键值对,再将字典的键值翻转,对键进行排列(也就是翻转前的值即每个nums出现的次数)。再取出键最高的k个值对应的value即可。(有点疑惑的是每个数都出现一次,键值翻转过后有很多键是相同的,如何找到对应的值)解法二:基于堆的快速排序方法。将nums一次加入规模为k的大顶堆中,最后将k个元素出堆。,请你返回其中出现频率前。
2024-06-12 18:53:40
264
1
原创 python刷力扣225.用队列实现栈
所以这里的队列2可以用作缓存,在pop和top的时候把除了队列底部的最后一个数先放到队列2,这样就实现了后入先出,pop完再把队列2中的值还给队列1.整体有点像这个图,链表是一头堵,所以两个链表,链表1直接最后入的先出输出到链表2就变成了先入留在栈底就实现了翻转,也就是先入先出。直接定义 self.front = [ ],不能用,因为pop()的时候不是从左端出来的,队列还是得用deque。但是队列1直接输出的是最早进入的直接输出到队列2也还是先入先出,所以方法不能照搬照抄。
2024-05-28 00:14:11
293
原创 python刷力扣232.用栈实现队列
解题思路:许多编程语言没有内置的栈类所以可以用链表或者数组实现栈的功能,这里使用数组实现。使用两个栈,一个栈用来存入,另一个栈做这个栈的反转用来实现先入先出。请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(
2024-05-27 22:37:13
341
原创 python刷力扣344.反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。解题思路:简单题但是解法众多,具体看代码吧。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。
2024-05-25 22:23:24
243
原创 python刷力扣15.三数之和
不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。,判断是否存在三元组。
2024-05-24 11:20:03
173
原创 python刷力扣383.赎金信
这题和有效字母异位很像,有效字母异位需要两个字符串完全相等,但是该题只需要a字符串中的字母在b中存在即可,即b>=a。但是要注意b中的字母只能用一次用完需要减去。
2024-05-21 22:03:16
294
原创 python刷力扣454.四数相加
再将后两个数组混合相加同时判断是否和哈希表中的结果和为0,并记录和为0的次数输出。先将前两个数组混合相加,将所有可能的结果及次数放入哈希表中。那必超时,换思路,加和问题试试哈希。解题思路:上来先搞一个四层循环。,请你计算有多少个元组。
2024-05-21 21:28:24
400
原创 python刷力扣1.两数之和
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。解法一:暴力解法,双循环O(n^2)整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。
2024-05-20 23:08:32
292
原创 python刷力扣349.两个数组的交集
使用数组实现哈希,因为题中给了nums数组大小的范围,如果没给则不可用。两个表记录数字出现的次数,一个表记录结果。使用字典和集合实现哈希。使用集合存储其中一个数组,再判断另一个数组中的元素在不在此数组中,讲结果add到集合里。解法一:卡python的bug直接使用set( )提取集合的交集,但是在其他语言中不能直接这么用。输出结果中的每个元素一定是。[4,9] 也是可通过的。
2024-05-20 22:39:58
177
原创 python刷力扣242.字母异位
给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。
2024-05-20 21:00:42
224
转载 python刷力扣142.环形链表
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。如果链表中有某个节点,可以通过连续跟踪。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。给定一个链表的头节点。如果链表无环,则返回。,则在该链表中没有环。
2024-05-14 23:58:57
214
原创 python刷力扣0.2.07.链表相交
给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交。
2024-05-13 21:36:22
179
原创 python刷力扣19.删除链表倒数第N个数
本题的关键是找到倒数第N个结点,然后将第N-1个节点与第N个结点链接起来。数组可以直接读取总长从后向前遍历删除即可但是链表不行,所以我们需要先做一遍遍历,确定链表总长,在通过总长-N得到需要删除节点的正向位置,在进行删除操作。为了更快的找到倒数第N个数,我们使用两个指针,快指针先移动N步,然后慢指针和快指针一起移动,在移动到链表末尾时快指针自然比慢指针快N步,慢指针位置也就是倒数第N个结点所在位置然后将第N-1个结点与第N+1个结点链接起来。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。
2024-05-13 20:40:44
314
原创 python刷力扣24.两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。算是比较基础的链表操作,但是要捋清各个节点指针的指向,因为一次处理可能需要四个节点一起联动。
2024-05-11 20:10:45
239
原创 python刷力扣206.反转链表
说是双指针其实用到了三个指针,有点类似最早写C语言的时候写交换数组位置的步骤,先用一个临时指针记录当前节点位置,然后将当前指针翻转指向前一个节点,之后不断循环这个过程直到链表为空。链表翻转第一反应应该就是两种思路,一种是创建一个新链表把原链表从尾到头重新输入至新链表;另一种是在原链表中把指针方向翻转一下。双指针法实现的就是后者,递归法也是基于此。,请你反转链表,并返回反转后的链表。
2024-05-11 20:00:20
278
原创 python刷力扣707.设计链表
这种题说难并不难就是结构比较复杂出了错找bug都不好找。注意两个点一是插入节点时新节点要先和后面的节点连接再使前一个节点连接该新节点;二是addAtIndex()的边界判断取不到index的最右边所以是>,其他都是>=。本题的目的是设计常用的链表功能,加深对链表的的理解,如果对手撸链表不熟悉的可以阅读。以指示链表中的上一个节点。假设链表中的所有节点下标从。你可以选择使用单链表或者双链表,设计并实现自己的链表。是指向下一个节点的指针/引用。如果是双向链表,则还需要属性。
2024-05-10 17:09:31
749
1
原创 python刷力扣203.移除链表元素
考虑到链表没有指针指向头节点,所以删除头节点时需要特殊的逻辑,所以我们虚拟一个头节点指向原头节点将删除逻辑统一,最后return头节点之后的链表。判断当前节点值是否是目标值,是的话断开链接,将节点指针指向下下个节点,不是的话移动到下一个节点继续判断。,请你删除链表中所有满足。给你一个链表的头节点。
2024-05-10 10:26:27
290
原创 python刷力扣209.长度最小的子数组
从当前值开始逐渐向后搜索寻找大于target的子集,记录当前子集长度,找到所有子集后做个对比输出最小的那个子集。最后还要判断一下子集是否存在,不存在输出0.解法一:双层循环暴力求解,但是对于大的测试用例超时。如果不存在符合条件的子数组,返回。找出该数组中满足其总和大于等于。个正整数的数组和一个正整数。
2024-05-10 00:54:18
391
原创 python刷力扣977.有序数组的平方
因为是有序数组所以顺序更改只会出现在负数平方了之后变正数的情况,所以使用两个指针分别对左端和右端平方并比较大小,不断的将大的值加入新列表都右端。个人理解其实用其他任意值也行但就是有bug的时候不好找不容易直接定位到bug位置。是无穷大(infinity)的缩写。在数学中,无穷大是比任何实数都大的数。在Python中,它是。解法一:暴力求解,先挨个求平方再排序。类型,可以用于比较操作或作为。组成的新数组,要求也按。是一种表示正无穷大的方法。有些题解中定义数组用到了。或者用列表推导一行解决。
2024-05-09 22:40:46
661
原创 python刷力扣26.删除有序数组中的重复项
解题思路:本题和27题如出一辙,27题覆盖的是指定元素本题覆盖的是重复元素,精华都是在不等号判断哪里。不过过程中卡了一下,第一遍的时候把慢指针设为从0 开始,快指针rang(n-1)然后判断第i个与第i+1个nums是否相等这样搞总是少一个数,后来意识到在查重问题里第一个数可以永远不用被覆盖所以慢指针可以从1(而不是0)开始,这样就实现了对第i个和第i-1个nums的判断。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。
2024-05-09 16:45:49
215
原创 Python3刷力扣367.有效的完全平方数
解题思路:其实和69题x的平方根思路与解法完全一致,就是输出不一样,69题中输出的是算数平方根或者离算数平方根最近的整数,本题输出的是对当前数值能否完全开平方的判断而已。是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。不能使用任何内置的库函数,如。是一个完全平方数,则返回。
2024-05-09 15:40:25
305
原创 python3刷力扣27.移除元素
双指针即使用两个指针配合,可以实现节省一层循环的效果。多数教程的说法是一个快指针用来判断一个慢指针用来写入,其实叫读与写更形象一些。直接看比较容易懵不知道为什么快指针会快一步,看代码可知巧妙的地方其实在于循环的判断条件,用一个不等号将与val相等的数值不做处理,快指针按顺序一步一步走将每一个与val不等的数值不断的向前写入慢指针所指向的位置,慢指针每次接受了写入的值之后再向前走这样就形成了一个不包含val的新数组。元素的顺序可以改变。不要使用额外的数组空间,你必须仅使用。的元素,并返回移除后数组的新长度。
2024-05-08 00:51:51
431
原创 python3刷力扣69. 算数平方根 367. 有效的完全平方数
8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。方法一:暴力求解(注意因为左闭右开这里的x要+1)不允许使用任何内置指数函数和算符,例如。由于返回类型是整数,结果只保留。
2024-05-06 23:28:50
202
1
原创 ROS1编译时自定义的msgs没问题但是报错缺少该配置文件
报错原因:在有些PC上编译功能包时顺序是随机的,可能会在没有编译到该功能包时就调用了该功能包的内容,导致无法找到配置文件和相关依赖。解决办法:需要将出错的功能包先单独编译再整体编译。报错内容:缺乏该文件或者配置文件设置有误。比如,一个名为hello_world的包。
2024-03-20 09:42:33
304
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人