
Leetcode
力扣算法练习
itmkyuan
坚持做难而正确的事情;种一棵树最好的时间是十年前,其次是现在!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
155. 最小栈(中等系列)
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。--> 返回 -3.minStack.getMin();--> 返回 -2.void push(int val) 将元素val推入堆栈。int getMin() 获取堆栈中的最小元素。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。MinStack() 初始化堆栈对象。第二种:数组自定义栈。原创 2023-08-28 02:09:54 · 384 阅读 · 0 评论 -
641. 设计循环双端队列(中等系列)
如果操作成功返回 true ,否则返回 false。如果操作成功返回 true ,否则返回 false。如果操作成功返回 true ,否则返回 false。如果操作成功返回 true ,否则返回 false。boolean isEmpty() :若双端队列为空,则返回 true ,否则返回 false。// 返回 true。boolean isFull() :若双端队列满了,则返回 true ,否则返回 false。int getFront() ):从双端队列头部获得一个元素。原创 2023-08-28 01:45:38 · 283 阅读 · 0 评论 -
225. 用队列实现栈(简单系列)
你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。原创 2023-08-27 21:34:37 · 343 阅读 · 0 评论 -
232. 用栈实现队列(简单系列)
你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)void push(int x) 将元素 x 推到队列的末尾。int pop() 从队列的开头移除并返回元素。int peek() 返回队列开头的元素。原创 2023-08-27 21:26:52 · 231 阅读 · 0 评论 -
622. 设计循环队列(中等系列)
在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。// 设置长度为 3。enQueue(value): 向循环队列插入一个元素。// 返回 true。// 返回 true。// 返回 true。// 返回 true。// 返回 true。MyCircularQueue(k): 构造器,设置队列长度为 k。deQueue(): 从循环队列中删除一个元素。// 返回 true。isEmpty(): 检查循环队列是否为空。原创 2023-08-27 21:18:59 · 167 阅读 · 0 评论 -
86. 分隔链表(中等系列)
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。输入:head = [1,4,3,2,5,2], x = 3。你应当 保留 两个分区中每个节点的初始相对位置。输入:head = [2,1], x = 2。链表中节点的数目在范围 [0, 200] 内。输出:[1,2,2,4,3,5]原创 2023-08-27 21:07:46 · 174 阅读 · 0 评论 -
206. 反转链表 (简单系列)
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]链表中节点的数目范围是 [0, 5000]输入:head = [1,2]输出:[5,4,3,2,1]输入:head = []原创 2023-08-27 21:00:49 · 209 阅读 · 0 评论 -
2. 两数相加(中等系列)
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]每个链表中的节点数在范围 [1, 100] 内。输入:l1 = [0], l2 = [0]输出:[8,9,9,9,0,0,0,1]题目数据保证列表表示的数字不含前导零。输出:[7,0,8]原创 2023-08-27 20:54:00 · 109 阅读 · 0 评论 -
35. 搜索插入位置(简单系列)
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。请必须使用时间复杂度为 O(log n) 的算法。nums 为 无重复元素 的 升序 排列数组。原创 2023-08-26 18:36:18 · 159 阅读 · 0 评论 -
27. 移除元素(简单系列)
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。输入:nums = [0,1,2,2,3,0,4,2], val = 2。元素的顺序可以改变。输入:nums = [3,2,2,3], val = 3。输出:5, nums = [0,1,4,0,3]原创 2023-08-26 14:24:14 · 157 阅读 · 0 评论 -
26. 删除有序数组中的重复项(简单系列)
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]输出:2, nums = [1,2,_]原创 2023-08-25 02:27:42 · 175 阅读 · 0 评论 -
21. 合并两个有序链表(简单系列)
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [], l2 = [0]两个链表的节点数目范围是 [0, 50]输入:l1 = [], l2 = []l1 和 l2 均按 非递减顺序 排列。输出:[1,1,2,3,4,4]原创 2023-08-24 15:09:43 · 127 阅读 · 0 评论 -
20. 有效的括号(简单系列)
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。s 仅由括号 ‘()[]{}’ 组成。左括号必须用相同类型的右括号闭合。输入:s = “()[]{}”左括号必须以正确的顺序闭合。输入:s = “()”输入:s = “(]”原创 2023-08-24 12:00:08 · 134 阅读 · 0 评论 -
14. 最长公共前缀(简单系列)
5.然后,使用while循环比较ans和当前遍历到的字符串中对应位置的字符,直到其中一个字符串的长度超过了另一个字符串的长度,或者遇到不相同的字符为止。7.循环结束后,使用substring方法将ans截取到位置j,并将结果赋给ans,即更新了最长公共前缀。输入:strs = [“flower”,“flow”,“flight”]1.首先,代码判断输入的字符串数组是否为空,如果是,则直接返回空字符串。输入:strs = [“dog”,“racecar”,“car”]如果不存在公共前缀,返回空字符串 “”。原创 2023-08-23 23:29:02 · 129 阅读 · 0 评论 -
13. 罗马数字转整数(简单系列)
通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。12 写做 XII ,即为 X + II。如果存在,则将对应的整数加到结果resut中,并向后移动两个位置(i+=2)。5.如果不存在,则直接将当前位置的字符对应的整数加到结果resut中,并向后移动一个位置(i+=1)。s 仅含字符 (‘I’, ‘V’, ‘X’, ‘L’, ‘C’, ‘D’, ‘M’)罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。原创 2023-08-23 22:44:37 · 146 阅读 · 0 评论 -
1.两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?输入:nums = [3,3], target = 6。原创 2023-08-23 10:17:09 · 223 阅读 · 0 评论 -
9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。解释:从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解释:从右向左读, 为 01。因此它不是一个回文数。例如,121 是回文,而 123 不是。输入:x = -121。输入:x = 121。原创 2023-08-23 01:17:16 · 134 阅读 · 0 评论 -
字符串反转
【代码】字符串反转。原创 2023-04-28 12:45:41 · 82 阅读 · 0 评论 -
剑指 Offer 12. 矩阵中的路径
输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。链接:https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof。输入:board = [[“a”,“b”],[“c”,“d”]], word = “abcd”原创 2023-04-27 20:58:05 · 667 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为 1。注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …链接:https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof。输入:numbers = [3,4,5,1,2]输入:numbers = [2,2,2,0,1]原创 2023-04-26 21:16:59 · 81 阅读 · 0 评论