Leetcode 23. 合并 K 个升序链表(分治)
摘要:题目链接在这里:合并K个升序链表 对于多个升序链表的合并,如果用C++写的话可以使用优先队列,队列里面存放的都是每一个链表的头结点。 也可以使用分治的方法来做,每次将链表两两合并,这样节约了时间。 这道题巩固了python中递归的应用。 # Definition for singly-linked
阅读全文
posted @
2023-03-27 16:26
珍珠鸟
阅读(19)
推荐(0) 编辑
Leetcode 22. 括号生成
摘要:题目链接在这里: 还是比较经典的括号匹配问题,这题学习了函数内套子函数的写法,但是关于全局变量还是有一点问题要问问龙哥,先挖个坑放这…… from ast import List # class Solution: # def generateParenthesis(self, n: int) ->
阅读全文
posted @
2023-03-26 06:31
珍珠鸟
阅读(14)
推荐(0) 编辑
Leetcode 18. 四数之和(双指针)
摘要:题目链接在这里:四数之和 这道题和前面的三数之和一模一样,只是需要枚举前两个数而已,需要注意一下前两个数的重复点的判断,并且不要忘记排序。 from ast import List class Solution: def fourSum(self, nums: List, target: int):
阅读全文
posted @
2023-03-26 03:59
珍珠鸟
阅读(15)
推荐(0) 编辑
Leetcode 17.电话号码的字母组合 (模拟)
摘要:题目链接在这里:电话号码的字母组合 这道题主要学习的是哈希表的应用:可以用大括号来代表建立哈希表,以及子函数的实现:可以直接在主函数中定义子函数,将
string拼成一个整个的长
string:"".join(list), 注意前面的这个空串是必要的,它代表子串之间直接相连,没有其他的字符。 f
阅读全文
posted @
2023-03-25 21:27
珍珠鸟
阅读(24)
推荐(0) 编辑
Leetcode 15 & 16 (双指针)
摘要:都是比较经典的双指针问题,我们可以从中总结一些双指针的规律 首先这两题如果en做的话就是
O(n3) 的算法,暴力去找。但是我们可以发现这三个值是满足一定约束的,所以考虑使用方法将它降到
O(n2) 。如果双指针,一个在头,一个在尾,两个向中间夹,根据约束条件合理选择向中间夹的策略,
阅读全文
posted @
2023-03-25 21:10
珍珠鸟
阅读(16)
推荐(0) 编辑
Leetcode 14. 最长公共前缀(模拟)
摘要:题目链接在这里:最长公共前缀 虽然是很简单的模拟题,但是鼠鼠学习了很多面向对象编程中遇到的一些问题,具体的可以看这个链接python中的静态方法与实例方法 class Solution: def longestCommonPrefix(self,strs)->str: if not strs: re
阅读全文
posted @
2023-03-21 21:39
珍珠鸟
阅读(21)
推荐(0) 编辑
Leetcode 11. 盛最多水的容器(贪心)
摘要:题目链接在这里:Leetcode 11.盛最多水的容器 这是一道非常好的贪心题,用到了双指针。首先这个数据用dp很显然是要超时的,如果使用二分,前缀数组也没有什么思路,所以考虑用贪心,贪心的话需要用两个指针移动,考虑从两端向中间移动。 我们知道短板效应,因此水的多少和长板的长度关系不大。可以得出结论
阅读全文
posted @
2023-03-21 15:58
珍珠鸟
阅读(18)
推荐(0) 编辑
Leetcode 7. 整数反转(模拟)
摘要:题目链接在这里:7. 整数反转 - 力扣(LeetCode) 这道题学习了list类型不能在没有定义长度的情况下直接访问里面的第i个元素,应该使用append或者在开始的时候就a = [0 for _ in range(n)] 1 class solution: 2 def longest(self
阅读全文
posted @
2023-03-20 22:57
珍珠鸟
阅读(11)
推荐(0) 编辑
Leetcode 6. N 字形变换(模拟)
摘要:题目链接在这里:6. N 字形变换 - 力扣(LeetCode) 比较简单的模拟题,此题需要学习python的字符串处理和数组的处理,字符串的拼接跟string一样直接+就行了,join是将一个数组中的多个字符串拼接起来用的。 1 class Solution(object): 2 def conv
阅读全文
posted @
2023-03-20 19:08
珍珠鸟
阅读(23)
推荐(0) 编辑
Leetcode 4. 寻找两个正序数组的中位数(二分)
摘要:题目链接在这里:4. 寻找两个正序数组的中位数 - 力扣(LeetCode) 是一道很好的二分题,一开始没有想到越界怎么处理,忽略了(m+n)/2一定介于min(n,m)和max(n,m)之间,因此如果确定在短的数组上进行二分就不用考虑越界问题了,其次没有考虑到当划分之后,左边区间的每一个点都小于右
阅读全文
posted @
2023-03-20 16:32
珍珠鸟
阅读(10)
推荐(0) 编辑
Leetcode 5.最长回文子串(区间dp)
摘要:题目链接在这里:5. 最长回文子串 - 力扣(LeetCode) 首先肯定是个n^2的算法,枚举起点也是必要的,但是枚举终点很显然不行,但是考虑到回文串会向下兼容,因此我们可以枚举长度,这就是典型的区间dp了,从短的子串可以推到长的子串的信息的可以用区间dp做。 1 class solution:
阅读全文
posted @
2023-03-18 22:37
珍珠鸟
阅读(16)
推荐(0) 编辑
LeetCode 3.无重复字符的最长子串
摘要:题目链接在这里:3. 无重复字符的最长子串 - 力扣(LeetCode) 这道题学习了几何函数set()的用法 1 class Solution(object): 2 def lengthOfLongestSubstring(self, s:str)->int: 3 n=len(s) 4 q=set
阅读全文
posted @
2023-03-13 20:02
珍珠鸟
阅读(15)
推荐(0) 编辑
LeetCode 2.两数相加
摘要:题目链接在这里:2. 两数相加 - 力扣(LeetCode) 这道题学了一些python类和子函数的语法,发现语法与C++有异曲同工之妙 1 class ListNode: 2 def __init__(self, val=0, next=None) -> None: 3 self.val = va
阅读全文
posted @
2023-03-13 17:52
珍珠鸟
阅读(18)
推荐(0) 编辑
Leetcode 1.两数之和(hash)
摘要:题目链接在这里:1. 两数之和 - 力扣(LeetCode) 这道题主要学习了python中哈希表的使用,类似于c++中的map容器,这里enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 1 # 暴
阅读全文
posted @
2023-03-13 11:37
珍珠鸟
阅读(11)
推荐(0) 编辑