
LeetCode
ly294687451
每天进步一点点。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode009: 删除排序数组中的重复项
题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例 2: ...原创 2019-02-28 11:04:02 · 109 阅读 · 0 评论 -
环形链表I 与 环形链表II(非常容易理解)
环形链表I 题目描述: 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos =...原创 2019-03-24 23:28:41 · 1893 阅读 · 0 评论 -
707. 设计链表
题目描述: 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。 在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值。如果索引无效,则...原创 2019-03-22 22:34:29 · 182 阅读 · 0 评论 -
相交链表
题目描述: 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (...原创 2019-03-26 15:20:43 · 3243 阅读 · 0 评论 -
21. 合并两个有序链表
题目描述: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 解题思路: 链表简单题,可以选择其中一个链表不动,另一个链表往里面插队,也可以新建一个链表,然后将原始两个链表分别比大小,依次插入到新的链表。我这里实...原创 2019-03-23 15:09:23 · 107 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点
题目描述: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 解题思路: 这是一道简单题。进阶要求使用一趟扫描实现,双指针是链表惯...原创 2019-03-26 16:15:14 · 142 阅读 · 0 评论 -
填充每个节点的下一个右侧节点指针
题目描述: 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 初始状态下,所有 next ...原创 2019-03-30 14:37:19 · 304 阅读 · 0 评论 -
反转链表
题目描述: 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 迭代法: 思想:新建一个链表,然后将原链表元素依次用尾插法插入到新链表的尾部,依次类推。 代码: public ListNode reve...原创 2019-03-28 15:58:56 · 118 阅读 · 0 评论 -
移除链表元素
题目描述: 删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 解题思路: 只需遍历整个链表,维护一个当前结点的前指针,若要找到删除的元素,直接将前指针的next域指向当前待删除结点的next域即可。 public ListNode...原创 2019-03-28 16:32:12 · 133 阅读 · 0 评论 -
奇偶链表
题目描述: 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 示例 1: 输入: 1->2->3->4->5->NULL 输出: 1->3->5->2->4->NULL 示例 2: 输入: 2->1->3->5->6->...原创 2019-03-28 17:12:46 · 202 阅读 · 0 评论 -
回文链表
题目描述: 请编写一个函数,检查链表是否为回文。给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。 测试样例: {1,2,3,2,1} 返回:true {1,2,3,2,3} 返回:false 思路一: 先把链表值存到栈中 然后遍历链表与栈弹出的值比较。栈中的值是从尾到头的这样就实现了第一个与倒数第一个匹配比较如果不一样则返回false public bo...转载 2019-03-28 17:44:12 · 216 阅读 · 0 评论 -
对称二叉树
题目描述: 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 说明: 如果你可以运用递归和迭代两种方法解决这个问...原创 2019-03-29 11:07:17 · 180 阅读 · 0 评论 -
155. 最小栈
题目描述: 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.pu...原创 2019-03-08 13:13:42 · 165 阅读 · 0 评论 -
225. 用队列实现栈
题目描述: 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你所使用的语言也许不支持队列。 你可以使用 li...原创 2019-03-12 11:35:38 · 175 阅读 · 0 评论 -
232. 用栈实现队列
题目描述: 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 示例: MyQueue queue = new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // 返回 1 queu...原创 2019-03-11 18:49:48 · 145 阅读 · 0 评论 -
11. 盛最多水的容器
题目描述: 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 **说明:**你不能倾斜容器,且 n 的值至少为 2。 `` 示例: 输入: [1,8,6,2,5,4,8,3,7] 输出: 49`` 解题...原创 2019-03-01 09:42:50 · 127 阅读 · 0 评论 -
43. 字符串相乘
题目描述: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 示例 1: 输入: num1 = "2", num2 = "3" 输出: "6" 示例 2: 输入: num1 = "123", num2 = "456" 输出: &原创 2019-03-02 11:10:13 · 440 阅读 · 0 评论 -
344. 反转字符串
题目描述: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:["h","e","l","l","o&q原创 2019-03-03 09:52:25 · 152 阅读 · 0 评论 -
557. 反转字符串中的单词 III
题目描述: 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例 1: 输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc" 解题思路: 先将字符串以空格分隔,将单词转换为字符串数组,然后分别将每个单词进行反转。 反转后再将各个单词拼接起来,以空格连接。 注意:在追加最后一...原创 2019-03-03 10:28:07 · 174 阅读 · 0 评论 -
136. 只出现一次的数字
题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 解题思路: 拿到题目,首先想到了用map集合来做,用数组每个元素的值作为key,出现次数作为value...原创 2019-03-06 10:08:37 · 132 阅读 · 0 评论 -
20. 有效的括号
题目描述 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入...原创 2019-02-27 10:48:18 · 139 阅读 · 0 评论 -
238. 除自身以外数组的乘积
题目描述: 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 示例: 输入: [1,2,3,4] 输出: [24,12,8,6] **说明:**请不要使用除法,且在 O(n) 时间复杂度内完成此题。 解题思路: 拿到题目,输出除自身以外其余数的乘积,觉得题目很简单。直...原创 2019-03-04 10:09:27 · 192 阅读 · 0 评论 -
739. 每日温度
题目描述: 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请输入 0 来代替。 例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。 提示: 气温 列表长度的范围是 [1, 30000]。每个气温的值的...原创 2019-03-10 10:13:40 · 319 阅读 · 0 评论 -
150. 逆波兰表达式求值
题目描述: 根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 输入: ["2", "1", "+", "3", "*"] 输出: 9 解释: ((2 + 1) * 3) = 9 示...原创 2019-03-10 10:52:50 · 234 阅读 · 0 评论 -
200. 岛屿的个数
题目描述: 给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输出: 1 示例 2: 输入: 11000 11000 00100 00011 输出: 3 解题思路: 类似于深度优先搜索,使用递...原创 2019-03-07 11:51:34 · 115 阅读 · 0 评论 -
94. 二叉树的遍历(非递归方式)
题目描述: 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] **进阶:**进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解题思路: 本道题就是二叉树的遍历,我想到了两种办法,就是常规的递归实现和显示栈实现。 方法一: 递归,不多说。 public List<...原创 2019-03-11 11:05:54 · 191 阅读 · 0 评论 -
二叉搜索树结点最小距离
题目描述: 给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值。 示例: 输入: root = [4,2,6,1,3,null,null] 输出: 1 解释: 注意,root是树结点对象(TreeNode object),而不是数组。 给定的树 [4,2,6,1,3,null,null] 可表示为下图: 4 / \ 2 ...原创 2019-04-03 19:19:36 · 513 阅读 · 0 评论