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 · 143 阅读 · 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 · 135 阅读 · 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 · 169 阅读 · 0 评论 -
Leetcode # 20:有序的括号[easy]
描述给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false...原创 2019-11-09 22:54:42 · 293 阅读 · 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 · 246 阅读 · 0 评论 -
Leetcode # 24:两两交换链表中的节点[hard]
描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例示例:给定 1->2->3->4, 你应该返回 2->1->4->3思路1>暴力遍历两个一组修改,注意保留前一组的后一个节点指针,用来修改每组的后置指针代码/** * Definiti...原创 2019-11-04 22:40:41 · 137 阅读 · 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 · 269 阅读 · 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 · 114 阅读 · 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 · 309 阅读 · 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 · 98 阅读 · 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 · 147 阅读 · 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 · 100 阅读 · 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 · 110 阅读 · 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 · 111 阅读 · 0 评论 -
Leetcode#2:两数相加[medium]
描述给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> ...原创 2019-10-27 22:55:29 · 109 阅读 · 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 · 103 阅读 · 0 评论 -
Leetcode#83:删除排序链表中的重复元素[easy]
题目描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。题目示例输入: 1->1->2输出: 1->2解题思路1>:迭代解法要删除重复的元素,即只需要遍历一遍即可,如果发现重复的元素直接覆盖。注意事项:非空检验 保留头结点引用 注意连续重复情况,如1->1->1->1 注意尾节点是重复节点导致的空指针...原创 2019-10-26 19:33:23 · 125 阅读 · 0 评论 -
Leetcode#21:合并两个有序链表[easy]
题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。题目示例输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路1>迭代解法要将两个有序链表合并为一个新的有序链表,只需要设置两个指针分别指向两个链表的头结点,比较两指针指向节点的大...原创 2019-10-26 19:08:34 · 121 阅读 · 0 评论