Leetcode
归止于飞
一个正在不断学习的学生
展开
-
LeetCode121 买卖股票的时机
LeetCode121C++解法原创 2022-11-27 20:26:52 · 241 阅读 · 1 评论 -
LeetCode112.路径总和(C++描述,递归解法)
对于二叉树的题型,我的第一想法是递归,采用递归的方法去计算路径的总和。函数作用:求一条路径的和。结束条件:当到达叶子节点时,可以返回。等价关系:将目标targetsum每次递归减去节点值,到最后的叶子节点时,若目标值恰好与叶子节点值相等,即可返回true。原创 2022-09-10 16:00:18 · 667 阅读 · 0 评论 -
LeetCode15.三数之和(C++,Python)
LeetCode15题目分析:给定整数数组情况下,需要先对原数组进行排序,以便与遍历时不会出现重复。如需要三个数字[a,b,c]当遍历出来的结果恒为:a<b<c时,就可以避免重复。代码结果:class Solution{public: vector<vector<int> > threeSum(vector<int> &nums) { int size = nums.size(); st原创 2022-03-17 20:47:02 · 1723 阅读 · 0 评论 -
LeetCode66.加一(Python)
思路:数组末端一共只有两种情况,9或非9,若为9即需要进1。所以我们需要做的就是把一个数组最后几位9进为0,第一个不是9的一位加一。最后对全是9的这一特殊数组进行处理class Solution: def plusOne(self, digits: List[int]) -> List[int]: n = len(digits) for i in range(n - 1, -1, -1): if digits[i] != 9:.原创 2022-01-21 20:38:39 · 441 阅读 · 0 评论 -
LeetCode144.二叉树的前序遍历(python)
LeetCode144.前序遍历题干解法1思路:递归创建一个递归函数,注意递归的三要素:停止递归的条件,简化问题,父问题与子问题没有重叠class Solution: def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]: res = [] def fun_pre(root): if root == None: re原创 2022-01-12 15:34:34 · 333 阅读 · 0 评论 -
LeetCode147.对链表进行插入排序(Python)
题目思路:可以理解为利用两个指针,一个对整个链表进行遍历,另一个在已经遍历过的线段寻找插入点。(建议画图便于理解)利用class Solution: def insertionSortList(self, head: ListNode) -> ListNode: # 首先判断链表是否为空 if not head: return head # 令dummy.head指向head,创建哑节点是为了方便将值插入头节点之前。 .原创 2022-01-06 16:19:22 · 454 阅读 · 0 评论 -
LeetCode的双指针解法合集(python)
文章目录文章简述LeetCode26——删除有序数组的重复项LeetCode27——移除元素LeetCode160——相交链表LeetCode141——环形指针小结文章简述笔者刚刚开始刷力扣,才刷了二十来道,便发现许多利用双指针解题的题目,于是便想一次性小结一下,便于发现异同,熟悉此类解法。LeetCode26——删除有序数组的重复项思路:题目有要求必须原地删除,切要求O(1)的额外空间,所以我们需要在原数组上进行处理。此时设有两个快慢两个指针,当快指针遇到的值与上一个值不相同时,即与slow交换原创 2022-01-02 15:16:15 · 1084 阅读 · 0 评论 -
LeetCode94——二叉树的中序遍历(python)
给定一个二叉树的根节点 root ,返回它的 中序 遍历。思路:递归,迭代。在进行解题前,需要知道什么是中序遍历:先递归地中序访问左子树,再访问根节点,最后访问右子树方法一:递归必备要素:终止条件,调用自身。创建一个函数,方便对于子树的嵌套循环。class Solution: def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]: res = [] # 建立一个用于递归的函原创 2022-01-02 14:52:24 · 607 阅读 · 0 评论 -
LeetCode3——无重复字符(Python)
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。方法一:暴力解法将字符串转换为列表,并从末尾开始遍历,将s1作为一个栈使用,当发现有重复字符时,就可以利用列表操作的切片进行修改。创建一个字典进行最大值的存储,最后防止特殊情况,s2最后的值另创一个槽放置。class Solution: def lengthOfLongestSubstring(self,s): s1 = list(s) s2 = [] s3 = {}原创 2022-01-01 13:42:24 · 805 阅读 · 0 评论 -
LeetCode141——环形链表(python)
给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/pr原创 2021-12-29 13:48:15 · 398 阅读 · 0 评论 -
LeetCode232——用栈实现队列(python)
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和原创 2021-12-26 15:05:38 · 950 阅读 · 0 评论 -
LeetCode225——用队列实现栈(python)
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 i原创 2021-12-26 11:58:47 · 394 阅读 · 0 评论 -
LeetCode155——最小栈(python)
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。栈可以看成一个特殊的列表,将栈中元素利用sorted进行排序然后输出第一个元素即可得到最小元素。class MinStack(object): def __init__(self): self.items = [] d原创 2021-12-25 15:25:06 · 193 阅读 · 0 评论 -
LeetCode20——有效的括号(python)
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:1、左括号必须用相同类型的右括号闭合。2、左括号必须以正确的顺序闭合。解法1思路:将程序中的“()”、“[]”、“{}“三种括号用” “代替,即空字符,如果最后剩下为空集,则确定为有效,非空集即为无效。首先我们要知道怎么使用replace函数:str.replace(old, new[, max])old – 将被替换的子字符串。new – 新字符串,用于替换old子字符原创 2021-12-14 16:00:09 · 1110 阅读 · 0 评论 -
LeetCode14——最长公共前缀(python)
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。本题解法参考了leetcode解题区大神,代码如下def longestCommonPrefix(strs): res = "" for tmp in zip(*strs): tmp_set = set(tmp) if len(tmp_set) == 1: res += tmp[0] else: break原创 2021-11-20 20:04:30 · 126 阅读 · 0 评论 -
LeetCode13——罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大原创 2021-11-16 20:32:43 · 52 阅读 · 0 评论 -
LeetCode9——回文数(python)
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool """ str_x = str(x) if str_原创 2021-11-15 21:25:08 · 705 阅读 · 0 评论 -
LeetCode7——整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围[−2^31 , 2^31−1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。...原创 2021-11-14 20:29:26 · 74 阅读 · 0 评论 -
LeetCode1——两数之和(python)
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。...原创 2021-11-09 21:53:33 · 57 阅读 · 0 评论