
LeetCode
林钟二五
YADX MaQing
展开
-
LeetCode_198.验证二叉搜索树
题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。代码实现:class Solution { public boolean isValidBST(TreeNode root) { BSTIte...原创 2019-10-21 17:37:39 · 142 阅读 · 0 评论 -
LeetCode_173.二叉搜索树迭代器
题目:实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。示例:BSTIterator iterator = new BSTIterator(root);iterator.next(); // 返回 3iterator.next(); // 返回 7iterator.hasNext(); // ...原创 2019-10-21 17:10:09 · 155 阅读 · 0 评论 -
LeetCode_724.寻找数组的中心索引
题目:给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出: 3解释:索引3 (nums[...原创 2019-04-07 16:48:15 · 114 阅读 · 0 评论 -
LeetCode_66.加一
题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。思路;...原创 2019-04-07 19:16:56 · 102 阅读 · 0 评论 -
LeetCode_169.求众数
题目:给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2思想:先模拟一个擂台,默认擂台上的一个擂主max为数组中的第一个元素,然后遍历数组将之后的元素依次拿进来和擂主相比较,如果等...原创 2019-04-07 19:37:38 · 133 阅读 · 0 评论 -
LeetCode_240.搜索二维矩阵II
题目:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[...原创 2019-04-07 20:15:38 · 123 阅读 · 0 评论 -
LeetCode_19删除链表的倒数第N个结点
LeetCode_19给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。方法只使用一次遍历,使用两个指针。第一个指针从列表的开头向前移动 n+1 步,而第二个指针将从列表...原创 2019-03-29 00:25:01 · 216 阅读 · 0 评论 -
LeetCode.160.相交链表
222原创 2019-03-29 00:25:49 · 116 阅读 · 0 评论 -
LeetCode_54.螺旋矩阵
题目:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4...原创 2019-04-08 18:09:11 · 190 阅读 · 0 评论 -
LeetCode_747. 至少是其他数字两倍的最大数
题目:在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。示例 1:输入: nums = [3, 6, 1, 0]输出: 1解释: 6是最大的整数, 对于数组中的其他整数,6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1示例 2:输入: nums = [1, 2, 3,...原创 2019-04-07 16:18:18 · 188 阅读 · 0 评论 -
LeetCode_2.两数相加
题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...原创 2019-04-07 15:10:46 · 109 阅读 · 0 评论 -
LeetCode.141.环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。算法通过使用具有不同速度的快、慢两个指针遍历链表,空间复杂度可以被降低至 O(1)。慢指针每次移动一步,而快指针每次移动两步。如果列表中不存在环,最终快指针将会最先到达尾部,此时我们可以返回 false。现在考...原创 2019-03-23 17:55:50 · 127 阅读 · 0 评论 -
LeetCode_142环形链表II
题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。思路包含141中用到的思想,同样用快慢指针来判断环,在141基础上多了一个就是要寻找入环结点,解决此问题用到了一个新的思想:要寻找入环...原创 2019-03-30 23:50:29 · 164 阅读 · 0 评论 -
汉诺塔问题
图解本图以三个盘子为例来说明问题代码实现public class Hano {/* * 假设现在64个盘子 * * 前63个 从x->y 借助z * 前62个 从x->z 借助y * 前61个 从x->y 借助z * ..... * 第62个 从x->z * 前61个 从y->z 借助x * .......原创 2019-04-04 17:37:16 · 115 阅读 · 0 评论 -
八皇后问题
图解代码实现public class EightQueen { private static int count=0; //记录第几种可能 private static int N=8; public static void main(String[] args) { int[][] arr=new int[N][N]; //默认元素为0 1当皇后 eightQuee...原创 2019-04-04 17:57:38 · 112 阅读 · 0 评论 -
LeetCode_206反转链表(用烧脑的递归思想和迭代思想实现)
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL图解难点n.next=root.next; //头插法,root结点后的第一个元素接在n的后面,相当于从右往左给链表赋值root.next=n; //将n传给root的下一个位置,n为链表的第一...原创 2019-04-04 23:08:16 · 263 阅读 · 1 评论 -
LeetCode_203.移除链表元素
题目:删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5图解难点if(head.val!=val)代码实现class Solution { public ListNode removeElements(ListNod...原创 2019-04-05 15:31:08 · 179 阅读 · 0 评论 -
LeetCode_234.回文链表
题目请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true图解代码实现class Solution { public boolean isPalindrome(ListNode head) { if(head==null||head.next==null)...原创 2019-04-05 17:56:29 · 153 阅读 · 0 评论 -
LeetCode_21.合并两个有序链表
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4图解:难点:要判断5种情况,并且要考虑这五种情况的判断优先级,否则可能会导致空指针异常。代码实现:class Solution { pub...原创 2019-04-06 13:40:48 · 143 阅读 · 0 评论 -
LeetCode_328. 奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2-&g...原创 2019-03-29 16:06:19 · 328 阅读 · 0 评论