Leetcode
_清欢
这个作者很懒,什么都没留下…
展开
-
Leetcode # 232:用栈实现队列[easy]
描述 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 示例 示例: MyQueue queue = new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // 返回...原创 2019-11-10 22:30:51 · 100 阅读 · 0 评论 -
Leetcode # 155:用队列实现栈[easy]
描述 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 示例 注意: 你只能使用队列的基本操作-- 也就是push to back, peek/pop from front, size, 和is empty这些操作是合法的。 你所使用的语言也许不支持队列。你可以使...原创 2019-11-10 22:01:41 · 94 阅读 · 0 评论 -
Leetcode # 155:最小栈[easy]
描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x)-- 将元素 x 推入栈中。 pop()-- 删除栈顶的元素。 top()-- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 示例 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStac...原创 2019-11-10 21:20:25 · 113 阅读 · 0 评论 -
Leetcode # 20:有序的括号[easy]
描述 给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 示例 1: 输入: "()" 输出: true 示例2: 输入: "()[]{}" 输出: true 示例3: 输入: "(]" 输出: false ...原创 2019-11-09 22:54:42 · 248 阅读 · 0 评论 -
Leetcode # 25:K个一组反转链表[hard]
题目 给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。 k是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。 示例 示例 : 给定这个链表:1->2->3->4->5 当k= 2 时,应当返回: 2->1->4->3->5 当k= 3 时,应当返回...原创 2019-11-05 20:49:25 · 153 阅读 · 0 评论 -
Leetcode # 24:两两交换链表中的节点[hard]
描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3 思路 1>暴力遍历 两个一组修改,注意保留前一组的后一个节点指针,用来修改每组的后置指针 代码 /** * Definiti...原创 2019-11-04 22:40:41 · 73 阅读 · 0 评论 -
Leetcode # 23:合并K个有序链表[hard]
描述 合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 思路 1>暴力解法 将所有链表遍历一遍,全部扔进一个数组里,然后将数组排序,用数组重构...原创 2019-11-03 22:33:10 · 245 阅读 · 0 评论 -
Leetcode # 19:删除链表的倒数第N个节点[medium]
描述 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 示例 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 思路 1>暴力解法 反转链表,删除整数第N个...原创 2019-11-02 22:31:11 · 98 阅读 · 0 评论 -
Leetcode # 876:链表的中间节点[easy]
描述 给定一个带有头结点head的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3,...原创 2019-11-01 22:37:51 · 238 阅读 · 0 评论 -
Leetcode # 237:删除链表中的节点[easy]
描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 --head =[4,5,1,9],它可以表示为: 示例 示例 1: 输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 ->...原创 2019-11-01 22:33:58 · 81 阅读 · 0 评论 -
Leetcode # 234:回文链表[easy]
描述 请判断一个链表是否为回文链表。 示例 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 思路 1>暴力解法 反转整个链表,然后遍历对比一遍即可。时间复杂度O(N),空间复杂度O(1) 2>优化 快慢指针遍历链表找到中间节点,然后将后半部分反转,再从头和从反转之后的头开始遍...原创 2019-11-01 22:22:26 · 108 阅读 · 0 评论 -
Leetcode#206:反转链表[easy]
描述 反转一个单链表。 示例 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路 遍历反转即可,注意修改节点后指针之前保留下一个节点引用,别让链表断掉 代码 /** * Definition for singly-linked list. * public ...原创 2019-10-30 21:18:22 · 79 阅读 · 0 评论 -
Leetcode#203:移除链表元素[easy]
描述 删除链表中等于给定值val的所有节点。 示例 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 思路 遍历比较覆盖即可,由于需要覆盖当前元素,因此需要保留前一个节点的指针,设置前后两个指针即可处理。 注意事项 注意链表为null,或者重复节点都在头结点...原创 2019-10-29 21:21:36 · 83 阅读 · 0 评论 -
Leetcode#160:相交链表[easy]
描述 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 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 输入解释:相...原创 2019-10-28 20:40:19 · 90 阅读 · 0 评论 -
Leetcode#2:两数相加[medium]
描述 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0开头。 示例 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> ...原创 2019-10-27 22:55:29 · 84 阅读 · 0 评论 -
Leetcode#141:环型链表[easy]
题目描述 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 题目示例 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例2: 输入:head = [1,2...原创 2019-10-26 19:54:36 · 79 阅读 · 0 评论 -
Leetcode#83:删除排序链表中的重复元素[easy]
题目描述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 题目示例 输入: 1->1->2 输出: 1->2 解题思路 1>:迭代解法 要删除重复的元素,即只需要遍历一遍即可,如果发现重复的元素直接覆盖。 注意事项: 非空检验 保留头结点引用 注意连续重复情况,如1->1->1->1 注意尾节点是重复节点导致的空指针...原创 2019-10-26 19:33:23 · 99 阅读 · 0 评论 -
Leetcode#21:合并两个有序链表[easy]
题目描述 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 题目示例 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 解题思路 1>迭代解法 要将两个有序链表合并为一个新的有序链表,只需要设置两个指针分别指向两个链表的头结点,比较两指针指向节点的大...原创 2019-10-26 19:08:34 · 97 阅读 · 0 评论