
leetcode
sjc7140
90后码农
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode 144 二叉树的前序遍历
给定一个二叉树,返回它的 前序 遍历。思路1. 递归public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<>(); pre(root,list); retu...原创 2019-11-12 17:38:46 · 192 阅读 · 0 评论 -
leetcode 724 寻找数组的中心数组
给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入: nums = [1, 7, 3, 6, 5, 6]输出: 3解释:索引3 (nums[3] ...原创 2019-10-30 10:30:58 · 217 阅读 · 0 评论 -
155 最小栈
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);m...原创 2019-10-24 15:32:50 · 277 阅读 · 0 评论 -
leetcode 234 回文链表
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?思路这题要把链表从中间折开,前半部分进行逆序,可以参考206反转链表。将前半部分逆序完的链表和后半部分链表依次进行比较判断是否为回文。找到中间节点...原创 2019-10-24 11:11:20 · 232 阅读 · 0 评论 -
leetcode 328 奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2-&...原创 2019-10-24 00:11:11 · 181 阅读 · 0 评论 -
leedtcode 19 删除链表的倒数第n个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路1.两次遍历(正常做法)既然是倒序,涉及到...原创 2019-10-21 09:51:24 · 152 阅读 · 0 评论 -
leetcode 160 相交链表
编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 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-10-18 12:00:25 · 138 阅读 · 0 评论 -
leetcode 203 移除链表元素
删除链表中等于给定值val的所有节点示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5思路不难,删除元素需要考虑三种情况:头部删除尾部删除中间删除可以设置一个空的节点virtual,让他指向头结点,这样删除头结点和删除中间节点就是一样的操作,不要额外考虑。最后...原创 2019-10-17 16:03:52 · 137 阅读 · 0 评论 -
leetcode 206 反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路1.栈第一时间想到栈。把节点依次压栈,再依次出栈即可。非常的简单public ListNode reverseList(ListNode head) { if(head == null){...原创 2019-10-17 13:30:34 · 221 阅读 · 0 评论 -
leetcode 141 环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:tru...原创 2019-10-16 17:08:07 · 146 阅读 · 0 评论 -
leetcode 142 环形链表2
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释...原创 2019-10-16 17:07:31 · 223 阅读 · 0 评论 -
leetcode 707 设计链表
设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。...原创 2019-10-16 10:25:58 · 219 阅读 · 0 评论 -
leetcode 2 两数之和
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 ->...原创 2019-07-31 14:18:25 · 284 阅读 · 0 评论 -
leetcode 7 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路看到反转,...原创 2019-08-06 14:25:15 · 114 阅读 · 0 评论 -
leetcode 9 回文数字
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶...原创 2019-08-06 22:49:50 · 140 阅读 · 0 评论 -
leetcode 13 罗马数字转整数
题目罗马数字包含以下七种字符:I,V,X,L,C,D和M字符数值I1V5X10L50C100D500M1000例如,罗马数字2写作II,即为两个并列的1。12写作XII,即为X+II。27写作XXVII,即为XX+V+II。通常情况下,罗马数字中小的数字在大的数字的右边。但是也存在特例,例如4不写做IIII,而是I...原创 2019-08-19 09:20:16 · 105 阅读 · 0 评论 -
leetcode 14 最长公共前缀
问题编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入:[“flower”,“flow”,“flight”]输出:“fl”示例2:输入:[“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀说明:所有输入只包含小写字母a-z。思路最简单的方法,从第一个字符串的第一个字符开始,一次对比后面字符串的...原创 2019-08-23 16:54:50 · 132 阅读 · 0 评论 -
leetcode 20 有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:...原创 2019-08-24 15:51:38 · 120 阅读 · 0 评论 -
leetcode 第21题 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4节点类: public class ListNode { int val; ListNode next; ListNode...原创 2019-10-08 14:45:53 · 162 阅读 · 0 评论 -
leetcode 622 设计循环队列
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircul...原创 2019-10-10 14:03:24 · 602 阅读 · 0 评论 -
leetcode 1 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路一最简单的...原创 2019-07-31 11:46:27 · 194 阅读 · 0 评论