![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
wenxi.da007
AI爱好者
展开
-
【leetcode】【简单】27. 移除元素【双指针:快指针+慢指针】
题目概述: 题目注意点: 如果使用remove的话,每用一次复杂度是O(N) ,其中N =len(nums) 解题思路: 完整代码: # 终于我自己写了一次,但是貌似速度很慢,因为每次remove,都会使得一堆迁移,增加复杂度 def removeElement(self, nums, val): for i in reversed(nums): if i == val:nums.remove(i) return len(nums) 为提高效率,还是看看大神的效果原创 2020-05-11 22:49:39 · 128 阅读 · 0 评论 -
【leetcode】【简单】26. 删除排序数组中的重复项思路方法【排序+双指针】
题目概述: 题目注意点: 需要排序 解题思路: 先排序 双指针移动赋值 完整代码: class Solution: def removeDuplicates(self, nums: List[int]) -> int: if not nums: return 0 i = 0 for j in range(1, len(nums)): if nums[i] != nums[j]:原创 2020-05-11 22:17:11 · 108 阅读 · 0 评论 -
【leetcode】【简单】21. 合并两个有序链表【递归调整指针】
题目概述: 题目注意点: 通过比较尾部大小,修改Next的指向 只修改指针,不修改内容,真是秀儿啊~ 解题思路: 完整代码: # 这里是系统给的连表内置功能 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution: def mergeT原创 2020-05-11 11:54:15 · 119 阅读 · 0 评论 -
【leetcode】【简单】20. 有效的括号【堆栈】
题目概述: 题目注意点: 初始化最好有个占位符 解题思路: 建立堆栈,这里使用列表 只存储左边的括号,遇到配对的就出栈 当最后只剩下标志符的时候,说明正确 完整代码: class Solution: def isValid(self, s: str) -> bool: dic = {'{': '}', '[': ']', '(': ')', '?': '?'} stack = ['?'] # 初始化,防止出现删除出错的情况 for原创 2020-05-10 16:42:35 · 132 阅读 · 0 评论 -
【leetcode】【中等】16. 最接近的三数之和【三指针移动】
题目概述: 题目注意点: 解题思路: 完整代码: class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: nums, r, end = sorted(nums), float('inf'), len(nums) - 1 for c in ra...原创 2020-05-08 22:31:55 · 81 阅读 · 0 评论 -
【leetcode】【中等】15. 三数之和【三指针移动】
题目概述: 题目注意点: 这题没有简单的写法了,一眼看上去就好麻烦。说实话这个题我会放弃,看不懂,记不住 解题思路: 先固定一个数字,然后用两个指针,往中间查找 完整代码: class Solution: def threeSum(self, nums: [int]) -> [[int]]: nums.sort() res, k = [], 0...原创 2020-05-06 22:31:58 · 87 阅读 · 0 评论 -
【leetcode】【简单】14. 最长公共前缀【垂直对比,水平扫描】
题目概述: 题目注意点: 首先审题,是公共前缀,不是字串。我就看错了,想复杂了。 strs = [“flower”,“flow”,“flight”] *strs 【参数解包】,单独操作不显示结果,可以理解为 ((“flower”),(“flow”),(“flight”)) 列表解包效果: 字典解包效果: 解题思路: for i in zip(*strs): 输出效果见图: ...原创 2020-05-06 20:37:58 · 140 阅读 · 0 评论 -
【leetcode】【简单】13. 罗马数字转整数【字典搜索】
题目概述: 题目注意点: 每次和右边数据比较大小,然后确认增加还是减去 如果是MCCC,这里需要确认右边大于左边才可以增加,等于也要减去 解题思路: 完整代码: class Solution(object): def romanToInt(self, s): if not s: return 0 # 建立罗马数字 到 阿拉...原创 2020-05-05 21:56:59 · 98 阅读 · 0 评论 -
【leetcode】【中等】12. 整数转罗马数字【贪心算法+人造字典】
题目概述: 题目注意点: 注意:当有多种组合的时候,使用最大的情况,而不是多个小组合的相加。 这个思路可以用于找钱,最少的纸张数,找的钱正好。 解题思路: 构造字典结构 采用贪心选择组建字符串 完整代码: class Solution: def intToRoman(self, num: int) -> str: # 把阿拉伯数字与罗马数字可能出现的所有...原创 2020-05-05 21:18:46 · 111 阅读 · 0 评论 -
【leetcode】【中等】11. 盛最多水的容器【双指针法】
题目概述: 题目注意点: 双指针,哪边桶壁短,移动哪边指针。 只需要遍历数组一遍 解题思路: 哪边桶壁短,移动哪边指针,向内移动。 面积计算公式:短边值 * 指针之间的距离 完整代码: 时间复杂度 O(N),双指针遍历一次底边宽度 N。 空间复杂度 O(1),指针使用常数额外空间。 class Solution: def maxArea(self, height: List[int]...原创 2020-05-05 20:07:49 · 103 阅读 · 0 评论 -
【leetcode】【简单】9. 回文数
题目概述: 题目注意点: 这个大佬已经无敌了。。。我无话可说,一行代码?! 解题思路: 简单方法,反转字符串和自己做对比 完整代码: # 方法一 class Solution: def isPalindrome(self, x: int) -> bool: return str(x) == str(x)[::-1] # 反转以后进行对比 ...原创 2020-05-05 19:24:13 · 118 阅读 · 0 评论 -
【leetcode】【中等】6. Z 字形变换 【flag翻转读取方向】
题目概述: 题目注意点: flag使用,正向移动和反向移动切换的标志。-1和1之间反复切换,作为移动步长。 解题思路: 理解大佬的思路: 字符是如何组合的 完整代码: class Solution: def convert(self, s: str, numRows: int) -> str: if numRows < 2: return s ...原创 2020-05-05 18:14:22 · 170 阅读 · 0 评论 -
【leetcode】【中等】5. 最长回文子串【中心扩散+动态规划法】
题目注意点: 解题思路: 完整代码:原创 2020-05-05 17:33:45 · 162 阅读 · 0 评论 -
【leetcode】3. 无重复字符的最长子串【中等】python版本
题目注意点: 因为R-L+1等于总长度,所以每次R+1以后,在计算maxlength 解题思路: 移动滑窗的方式,分别创建L和R,每次移动以后记录最大值maxlength 完整代码: class Solution: def lengthOfLongestSubstring(self, s: str) -> int: length=l=r=0 w...原创 2020-05-05 12:03:39 · 294 阅读 · 0 评论 -
【leetcode】【简单】7. 整数反转【位运算解法】
题目注意点: 解题思路: 完整代码:原创 2020-05-05 18:44:27 · 440 阅读 · 0 评论 -
【leetcode】【简单】1. 两数之和 【哈希表方法 或 python字典索引方法】
题目注意点: 使用字典存储下标的方式: 优势:查找是否存在其中,dict速度比List遍历要快很多倍。 python中in在list和dict中查找效率比较 解题思路: target依次减去nums列表中的元素,看看是否存在dict中,如果不存在,就吧这个元素和下标加入到dict中。存在就返回两个下标。 字典存放技巧:list的值当key,下标当做val class Solution: d...原创 2020-05-05 08:44:08 · 239 阅读 · 0 评论