自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 18.四数之和

方法一:排序+双指针。思想:与三数之和相同。

2023-05-11 16:13:47 72

原创 16.最接近的数之和

思想:同15.三数之和。方法一:排序加双指针。

2023-05-11 11:52:24 70

原创 15.三数之和

1. 枚举的三元组(a,b,c) ,满足a<=b<=c,保证了只有 (a,b,c) 这个顺序会被枚举到,而(b,a,c)、(c,b,a) 等等这些不会,这样就减少了重复。3.固定一个数,使用双指针分别寻找和为0的两外两个数据(当和小于0,说明需要增大数据来使和为0,left+1,否者需要减小数据,right-1)2. 需要枚举数组中的两个元素时,如果我们发现随着第一个元素的递增,第二个元素是递减的,那么就可以使用双指针的方法。1.由于需要求和为0的不重复的三数和,因此数据中有负数,也有正数(除非全0)

2023-05-10 16:50:14 82

原创 28.找出字符串中第一个匹配项的下标

易错点:字符串中每一个字符都可能成为与needle首字母匹配的字符,所以应该考虑haystack中每一个字符作为匹配的首字母(容易使用遍历字符串haystack,但是没有考虑每个字符成为匹配needle首字母的可能)方法二:暴力法(切片)

2023-05-10 11:49:18 111

原创 12.整数转罗马数字

4.num是由一个key组成还是由key和其他key数组成,则要看num % key 这个余数,将余数作为num,如果余数为0,表示只由一个key组成,否则由多个key组成。3.如果给的num能整除key,说明该key可以组成num(大于num的key,num//key == 0)1.将数字与罗马数字使用字典从大到小保存。2.从大到小的循环访问字典中的key。

2023-05-09 20:42:13 34

原创 482.密钥格式化

【代码】482.密钥格式化。

2023-05-08 10:09:12 47

原创 500.键盘行

思想:通过strip()去除字符串中指定的字符,如果去除字符的字符串为空,表示该字符串中的所有字符都在指定去除字符串中。1. 暴力法:通过统计数量判断,同类数量与可迭代对象长度相等,则可迭代对象内的元素属同一类。2.2判断字符串中所有的字符是否都在相同的行(哈希表)2.1首先获取每个字符串首字母所在的行(哈希表)2.循环判断每个每个字符串中的字符是否在同一行。1.使用字符串来表示26个小写字母所在的行。2. 使用all()方法。

2023-05-04 11:15:00 30

原创 506.相对名次

方法一:排序+index()方法二:排序+哈希表。

2023-05-04 10:30:23 41

原创 121.买卖股票的最佳时机

方法二:动态规划改进。

2023-04-26 11:54:26 27

原创 231.2的幂

思想:利用有符号数,最高位为2 ** 30,若n为2 ** 30 的约数,则n符合条件。思想:根据题目,相当于n的二进制中只有一个1,且n为正数时,符合条件。思想:利用n & (-n) == n时,n中只有一个1这个特性。方法二:位运算(技巧)

2023-04-24 17:27:17 28

原创 191.位1的个数

思想:由于给的n有32位,从n的低位开始,将n与1进行“与”运算(即从低位开始寻找n中的1,此处使用左移位运算符),如果相“与”的结果为1,表示n中含有1,将ret加上1,最后返回1总共的个数ret。思想:由于n & (n-1)获得的结果为n将最低位的1变成0,所以使用这个特性,当结果为0时,n中的1全部转换成了0,即能统计全部的1个数(这样就不需要将32位全部进行“与”运算,减少了运算时间)方法三:count()计数法。方法二:位运算的优化。

2023-04-24 16:34:30 28

原创 349.两个数组的交集

3.如果两个元素相等,如果是第一个相等的元素,则将该元素放入交集中,并将两指针都向右移动一位;如果不是第一个相等的元素,则需要判断该元素是否在交集中存在,不存在则加入,否则不加入,并将两指针都向右移动一位。2.使用index1和index2两个指针从0开始分别逐一访问nums1和nums2的数组元素,直到超出两个数组的范围。2.逐一访问较短数组s_nums元素,如果该元素存在于较长数组l_nums中,则将该元素放入交集数组中nums。4.如果其中一个元素小于另一个元素,则将指向较小元素的指针向右移动一位。

2023-04-21 18:21:49 35

原创 219.存在重复元素II

【代码】219.存在重复元素II。

2023-04-21 18:03:58 30

原创 217.存在重复元素

思想:经过排序后,如果相邻两个数相同,则这个数组中至少有一个值出现了两次。思想:利用集合的元素唯一的特性,比较原数组长度和集合长度。

2023-04-21 11:20:25 29

原创 205.同构字符串

思想:如果s和t中的字符是一一映射关系,则s和t是同构字符串,否则不是。方法一:哈希表,一一映射。

2023-04-20 22:29:33 41

原创 169.多数元素

【代码】169.多数元素。

2023-04-18 21:44:25 41

原创 796.旋转字符串

思想:如果s与goal长度不相等,则再反转也不会相等,即返回False;如果长度相等,goal使s+s的子串,也返回True(发现的规律,技巧)2.遍历S,使用切片分别获取字符串的后部分和前部分,并将着两部分组成新字符串。4.知道全部反转,如果还与goal不相等的话,返回False。3.将新字符串与goal比较,相等的话,返回True。1.当S与goal一样时,返回True。

2023-04-18 20:45:56 32

原创 806.写字符串需要的行数

【代码】806.写字符串需要的行数。

2023-04-18 18:32:32 30

原创 541.反转字符串 II

1.字符串转换成列表,使用列表反转函数reversed()1.将字符串转换成列表,方便后续使用列表的反转函数。2.循环访问列表元素,获取反转子序列的首索引。4.最后将反转后的字符串列表再转换成字符串。3.字符串列表中字符串的拼接join()2.间隔访问列表元素。

2023-04-17 12:01:19 41

原创 804.唯一摩尔斯密码

3.求集合的长度即为不同摩尔斯密码的个数(利用集合中的元素不能重复特性)1.将字符串列表转换成摩尔斯字符串列表。2.再将摩尔斯字符串列表转换成集合。

2023-04-17 10:35:22 36

原创 521.最长特殊序列 I

方法一:模拟法(观察规律)

2023-04-17 10:30:35 26

原创 434.字符串中的单词数

【代码】434.字符串中的单词数。

2023-04-14 21:02:24 22

原创 520. 检测大写字母

520. 检测大写字母。

2023-04-14 19:14:48 26

原创 415.字符串相加

相加的结果:res = str((sum) % 10) + res。当两个字符串长度不相等,给短的字符串前端添加0之后再对位相加。和:sum = n1 + n2 +carry。思想:从字符串末尾开始往前相加,模拟加法。进位:sum // 10。方法一:模拟法,双指针。

2023-04-14 18:18:13 34

原创 771.宝石与石头

思想:根据题目,判断jewels中每个字符在stones中的数量,并将所有的数量相加即位宝石的数量。

2023-04-14 11:19:39 29

原创 412.Fizz Buzz

【代码】412.Fizz Buzz。

2023-04-13 23:12:08 33

原创 389.找不同

思路:根据题目可知,字符串t中的字符比s多一个字符,第一种情况:该字符可能是s中已经存在的,第二种情况:该字符也有可能是s中不存在的(错误解法:统计s之后,直接判断t中的字符在s统计的数中为0的那个字符为需要找的字符,这里只考虑到了第一种情况)2.循环字符串t,将字符串t中每个字符的数量与统计的s的数量对立(此处使用减法相对快速)2.循环字符串t,将字符串t中每个字符的数量与统计的s的数量对立(此处使用减法相对快速)

2023-04-13 22:38:25 35

原创 387.字符串中的第一个唯一字符

2.遍历字符串,判断字符串中字符在字典中的个数,第一个出现个数为1的字符为寻找的字符,返回该字符的索引(2.遍历字符串,判断字符串中字符在字典中的个数,第一个出现个数为1的字符为寻找的字符,返回该字符的索引。2.遍历字符串,判断字符串中字符在列表中的个数,第一个出现个数为1的字符为寻找的字符,返回该字符的索引。1. 统计字符串中各个字符的个数:使用字典统计。1. 统计字符串中各个字符的个数:使用字典统计。1.统计字符串中各个字符的个数:使用列表统计。

2023-04-13 20:25:44 32

原创 125.验证回文字串

3.使用一个指向左侧和一个指向右侧的指针(初始指向首和尾),分别向中间移动判断两指针指向元素是否相等,只要有不相等的,则不是回文字符串,否则就是回文字符串。),将字母或者数字的字符与空字符串拼接,得到一个由全部小写字母组成的新字符串——(使用方法一的第三种写法)2.遍历字符串,将字母或者数字的字符与空字符串拼接,得到一个由全部小写字母组成的新字符串。3.利用切片方法判断字符串正反序是否相等,相等,则是回文字符串,否则,不是回文字符串。使用ord()将字符转换成十进制,再将十进制与ASCII码比较。

2023-03-29 09:04:33 59

原创 225.用队列实现栈

方法一:使用一个队列实现栈方法二:使用两个队列实现栈

2023-03-20 15:24:15 124

原创 66.加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。

2023-03-14 10:41:45 36

原创 35.搜索插入位置

搜索插入位置

2023-03-14 08:34:39 187

原创 26.删除有序数组中的重复项

使用一个指针fast循环比较数组相邻两个元素相等的情况,使用另一个指针slow存放新数组,最后返回新数组长度slow。该题需要将获取的数组元素覆盖原始数组。

2023-03-14 08:09:45 27

原创 268.丢失的数字

给定一个包含[0, n]中n个数的数组nums,找出[0, n]这个范围内没有出现在数组中的那个数。

2023-03-11 22:06:54 38

原创 1.两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。循环数组,判断当前获得的num是否在哈希表中有数与之和为target,如果没有,将当前的num存入哈希表中;如果有,则返回num的下标和哈希表中target - num的值(哈希表即python中的字典)外层循环数组固定两数之和的其中一个数,使用切片方法在剩余数组中寻找与该数和为target的数字。求两数之和,需要同时知道数组元素和元素下标(想到哈希表)

2023-03-11 19:08:40 34

原创 136.只出现一次的数字

给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

2023-03-11 17:15:37 26

原创 33.搜索旋转排序数组

给你 旋转后 的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回-1。

2023-03-11 16:52:36 29

原创 4.寻找两个正序数组的中位数

给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数

2023-03-11 15:56:59 23

原创 977.有序数组的平方

题目:给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

2023-02-24 11:50:54 126

原创 209.长度最小的子数组

主要针对slow指针的循环,如果slow和fast之间的和大于等于目标值,将slow指针往前移动1位继续判断双指针之间的数据和,直到双指针之间的数据和小于目标值,结束内部循环,进入外部循环,重复以上操作。2.外层循环计算连续数组的和,内层循环进行当和大于等于目标值的操作,此处注意,连续数组的和4个满足条件,还要判断减去首个数字后,和是否满足条件,因此sum = sum - nums[slow]使用双循环,双指针slow、fast,外部循环整个数组,内部循环计算双指针之间的和。

2023-02-24 10:32:55 35

空空如也

空空如也

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

TA关注的人

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