自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【字符串】5:赎金信

文章目录思路leetcode 383:赎金信 (python)思路这里采取了哈希表的方法,题目要求判断 ransomNote 能不能由 magazine 里面的字符构成, 且magazine 中的每个字符只能在 ransomNote 中使用一次。那我们可以使用Counter分别记录ransomNote 和magazine 中的字符出现次数,由于randomNote要由magazine中的字符构成,那么randomNote的Counter必然要 含于magazine的Counter,我们求出magaz

2022-03-06 15:06:59 7404

原创 【链表】3:两两交换链表中的节点

文章目录思路leetcode 24: 两两交换链表中的节点 (python)注:仅供学习,并非商用思路鉴于需要两两交换,所以我们需要三个指针pre、mid、lst,分别指向 需要交换的两个节点的前一个节点、要交换的第一个节点、要交换的第二个节点。具体代码如下:# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val =

2022-03-05 20:10:48 445

原创 【链表】2:反转链表

文章目录头插法双指针法Leetcode 206: 反转链表 (python)注:本文仅供学习,并无商业用途、头插法可以增加一个虚拟头节点,初始时其next值为None。然后依次遍历题目所给链表,依次将节点以头插法插入虚拟头节点指向的链表之中。代码如下:# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val

2022-03-05 19:53:30 501

原创 【链表】1:移除链表元素

文章目录思路Leetcode 203: 移除链表元素 (python)思路这里采用常规的链表元素移除思路:构建一个虚拟头节点指向题目所给的头节点head,然后依次遍历链表中的元素,判断其值是否等于val,若相等,则去除当前元素;否则,将当前指向的元素后移一个,然后继续判断。代码如下:# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):#

2022-03-05 17:08:25 438

原创 【字符串】4:翻转字符串中的单词

思路这一题比较麻烦的点在于:字符串的空格可能是连续的。单纯使用split()对字符串按照空格进行划分,可能会在得到的列表中出现‘’,为此,我们需要遍历字符串,对里面的空格逐一进行判断。代码如下:class Solution: def reverseWords(self, s: str) -> str: words = [] i = 0 while i < len(s): # 寻找一个单词的开头下标

2022-03-02 21:36:49 43

原创 【字符串】3:反转字符串Ⅱ

文章目录官方题解Leetcode 541: 反转字符串Ⅱ (python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。官方题解这里的反转字符串较之前面一个反转,区别在于要分段进行反转。查看了一下官方的题解代码,十分简洁(我才发现原来列表切片的end可以超出现有列表下标大小)官方代码如下:class Solution: def reverseStr(self, s: str, k: int) -> str:

2022-03-02 20:42:31 7319

原创 【字符串】2:反转字符串

文章目录思路与代码Leetcode 344: 反转字符串(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。思路与代码本来想直接调用python库函数reverse的,后来还是决定自己动手写一遍,原理为:使用双指针分别指向字符串的头部和尾部,依次将两个指针对应的位置的元素进行交换,直到两指针相遇。代码如下:class Solution: def reverseString(self, s: List[s

2022-02-28 17:41:37 194

原创 【字符串】1:同构字符串

文章目录思路Leetcode 205: 同构字符串(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。思路这道题其实还算中规中矩,使用之前提到过的哈希表就可以了,为字符串s和t分别建立一个哈希表,分别用于保存 s及t 中的每一个字符 与 t及s 中对应字符的映射。代码如下:(来自代码随想录)class Solution: def isIsomorphic(self, s: str, t: str) -&

2022-02-28 17:28:11 276

原创 【数组】16:螺旋矩阵Ⅱ

文章目录我的思路Leetcode 59: 螺旋矩阵Ⅱ(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。我的思路这道题和之前做过的螺旋矩阵思路很是类似,只不过之前是按顺时针顺序自外而内依次将矩阵元素存入列表,这次是将列表元素依次放到矩阵对应位置。具体代码如下:class Solution: def generateMatrix(self, n: int) -> List[List[int]]:

2022-01-29 17:51:50 411

原创 【数组】15:轮转数组

文章目录我的思路Leetcode 189: 轮转数组(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。我的思路python内置的列表操作函数真的很方便,所以我的想法也就很直观:假设数组大小为n,当所需要移动的位数 k <= n 时,即新数组的前k位等于原数组的最后k位,剩下的部分同理。具体的如图所示:如果k > n,则取 k = k % n,使得k <= n,然后执行上面的过程。代码

2022-01-29 16:53:17 936

转载 【数组】14:长度最小的子数组

文章目录双指针滑动窗口Leetcode 209: 长度最小的子数组(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。双指针滑动窗口以下思路来源于leetcode题解里的大佬林深时见鹿1、思路(双指针) O(n)O(n)给定一个含有 n 个正整数的数组和一个正整数 target ,让我们找出该数组中满足其和 ≥ target 的长度最小的 连续子数组。样例:如样例所示,target = 7, nums =

2022-01-26 15:42:28 60

原创 【数组】13:有序数组的平方

文章目录我的想法大佬思路Leetcode 977: 有序数组的平方(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。我的想法本小菜鸡的想法向来是直观暴力但是不够简洁巧妙(手动扶额.jpg),所以直接采用python内部的列表生成式生成一个由列表中每个数的平方组成的新数组,再采用python列表内置的排序函数sort()即可。代码为:class Solution: def sortedSquares(s

2022-01-26 11:40:42 914

转载 【数组】12:删除有序数组中的重复项

文章目录leetcode双指针求解Leetcode 34: 删除有序数组中的重复项(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。leetcode双指针求解解题思路:解法: 双指针首先注意数组是有序的,那么重复的元素一定会相邻。要求删除重复元素,实际上就是将不重复的元素移到数组的左侧。考虑用 2 个指针,一个在前记作 p,一个在后记作 q,算法流程如下:1.比较 p 和 q 位置的元素是否相等。如果

2022-01-24 12:58:09 69

原创 【数组】11:移除元素

文章目录我的思路大佬思路:双指针Leetcode 27: 移除元素(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。我的思路由于题目要求原地移除元素,所以我们不能使用额外的辅助空间。因此,我们可以很直观地想到将所有值等于val的元素依次移到数组尾部。具体的执行思路为:用一个变量count记录当前找到的值等于val的元素的个数,用n-count记录元素被挪到数组尾部的位置,如果当前尾部元素的值也为val,则将co

2022-01-24 12:29:58 197

原创 【数组】10:x的平方根

文章目录我的思路Leetcode 69: x的平方根(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。我的思路由于题目规定不能使用内置函数,所以这里采用二分搜索的方法求解最后的算术平方根。具体思路为:在0~x的范围内设置low与high,求出mid值。通过比较mid的平方与x的大小来决定low与high的变化。若mid的平方小于x且mid+1的平方大于x,则说明mid是最后平方根的取整值,如果mid+1的平方也

2022-01-23 17:56:28 452

原创 【数组】9:搜索插入位置

文章目录我的解法大佬思路二分搜索Leetcode 35: 搜索插入位置(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。我的解法我的思路就是,首先判断target在不在nums数组中,如果在的话,直接使用index函数返回其索引,否则遍历数组,找到数组中第一个比target大的数的索引并返回。代码如下:class Solution: def searchInsert(self, nums: List[

2022-01-23 17:33:51 3931

原创 【数组】8:在排序数组中查找元素的第一个和最后一个位置

文章目录我的思路Leetcode 34: 在排序数组中查找元素的第一个和最后一个位置(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。我的思路刚刚学会的计数器派上用场了,这一题我的思路是:先使用计数器Counter求出数组中每个数出现的次数,然后使用index()函数求出target第一次出现的索引值,得到左侧索引;将该索引值加上该数出现的次数再减一即得右侧索引。代码如下:class Solution:

2022-01-23 17:11:05 188

原创 【数组】7:二分查找

文章目录我的思路Leetcode 704: 二分查找(python)注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。我的思路其实这道题还比较常规,因为是有序数组,直接使用二分查找即可得到所求数值索引。我的代码如下:class Solution: def search(self, nums: List[int], target: int) -> int: low, high = 0, len(n

2022-01-23 16:38:50 246

原创 【数组】6:有效的字母异位词

Leetcode 242: 有效的字母异位词(python)注:本人文章中内容中来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。字典模拟哈希表创建两个字典,分别用于存储两个字符串中每个字符出现的次数,最后对两个字典的键和值依次进行比较。class Solution: def isAnagram(self, s: str, t: str) -> bool: dic1 = {} dic2 = {}

2022-01-23 13:48:39 318

原创 【数组】5:两数之和

文章目录暴力求解字典模拟哈希表求解Leetcode 1: 两数之和(python)注:本人文章中内容中来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。暴力求解暴力求解最直观,即通过多次循环遍历寻找符合条件的数值对,但是它的耗时比较长,不是特别推荐。def twoSum(self, nums: List[int], target: int) -> List[int]: n = len(nums) for i

2022-01-23 13:23:54 438

转载 【数组】4:盛最多水的容器

Leetcode 11: 盛最多水的容器注:本人文章中内容中来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。大佬思路我想了很久,没有想出思路,于是参考了leetcode上大佬Krahets的题解,双指针思想太妙了!以下内容均转载自leetcode的题解。大佬思路如下:设两指针 ii , jj ,指向的水槽板高度分别为 h[i]h[i] , h[j]h[j] ,此状态下水槽面积为 S(i, j)S(i,j) 。由于可容纳水的高度由两板中的 短板

2022-01-22 22:23:29 57

原创 【数组】3:四数相加Ⅱ

文章目录我的思路leetcode官方题解Leetcode 454: 四数相加Ⅱ (python)注:本人文章中内容中来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。我的思路额,本小菜鸡最直接的思路是采用最简单的四层for循环,但是尝试后发现,这种方法在输入数组较大时会超出时间限制。于是我尝试将四个数组分成两组,采用一个字典记录前两个数组中每一种数值组合出现的次数,如{1:3, 2:4},这个字典说明前两个数组中,使得两数之和为1的组合有3种,使

2022-01-22 20:21:10 411

原创 【数组】2:螺旋矩阵

文章目录题目要求我的思路其它大佬的思路Leetcode 54题:螺旋矩阵(Python)注:本人文章中内容中来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。题目要求给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]我的思路我采取了一种特别简单的思路,既然是螺旋式

2022-01-22 15:04:24 245

原创 【数组】1:除自身以外数组的乘积

文章目录错误思路记录参考思路Leetcode 238题:除自身以外数组的乘积 (python)错误思路记录我一开始的想法十分简单,既然要求数组乘积和,那么直接使用python内置的reduce()函数就可以了。刷题菜鸡完全没有想到要使用算法,于是写出了如下代码:from functools import reducenums = list(map(int, input().lstrip('[').rstrip(']').split(',')))results = [None] * len(nu

2022-01-21 19:03:14 263

空空如也

空空如也

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

TA关注的人

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