随笔分类 -  LeetCode

字母异位词分组
摘要:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 说明: 所有输入均为小写字母。 不考虑答案输出的顺序。 解题思路 对于一组异位词,若对其进行字符大小排列,得到的词都是相同的。 如["ate","eat","tea"] 对每个词按字符大小排列后得到的都是 阅读全文

posted @ 2018-05-31 21:05 Deltadeblog 阅读(234) 评论(0) 推荐(0)

验证二叉搜索树
摘要:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 示例 2: 解题思路: 由二叉搜索树的特点可知,若对其进行中序遍历,得到的则是一个递增 阅读全文

posted @ 2018-05-29 21:04 Deltadeblog 阅读(2015) 评论(0) 推荐(0)

二叉树的中序遍历
摘要:给定一个二叉树,返回它的中序 遍历。 示例: 二叉树中序遍历比较简单,这里需要注意的是如何存储遍历结果。 如下代码实现中,将二叉树的节点值存储在List<Integer>中。 阅读全文

posted @ 2018-05-24 20:10 Deltadeblog 阅读(753) 评论(0) 推荐(0)

反转链表 II
摘要:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明:1 ≤ m ≤ n ≤ 链表长度。 示例: 解题思路: 将第m个节点之后的(n-m)个节点依次插入第m个节点之前。 如示例中 将节点3插入1 、2中,1->3->2->4->5->NULL 将节点4插入1 、3中,1->4->3->2- 阅读全文

posted @ 2018-05-24 19:38 Deltadeblog 阅读(344) 评论(0) 推荐(0)

分隔链表
摘要:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。 示例: 解决思路: 从左向右遍历链表,将节点值小于x的节点交换至链表的前端,使用tag指向前端最后一个节点。 代码如下: 另一种方法是生成两个子链表, 阅读全文

posted @ 2018-05-22 20:19 Deltadeblog 阅读(272) 评论(0) 推荐(0)

搜索二维矩阵
摘要:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: mark 解决思路: 使用二分查找,m行n列的矩阵matrix共有mn个元素,其中第x个元素对应matrix中位置为[x/ 阅读全文

posted @ 2018-05-18 20:50 Deltadeblog 阅读(254) 评论(0) 推荐(0)

最小路径和
摘要:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例: 解决思路: a c b 对于网格中的点a,到达右下角要么经过b要么c,若已知b、c最短路径和分别为sum(b)、sum(c),则a点的最短路径和为s 阅读全文

posted @ 2018-05-17 19:14 Deltadeblog 阅读(171) 评论(0) 推荐(0)

不同路径 II
摘要:一个机器人位于一个 m x n 网格的左上角 (起始点标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 示例 1: 解决思路: 相比于上节内容,本题网格中存在障碍物,故需要额外考虑两点。 阅读全文

posted @ 2018-05-16 19:26 Deltadeblog 阅读(157) 评论(0) 推荐(0)

不同路径
摘要:一个机器人位于一个 m x n 网格的左上角 (起始点标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(标为“end”)。 问总共有多少条不同的路径? 示例: 解决思路: 考虑网格中每一格到达右下角有多少路径,显然最后一行及最后一列到达右下角只有一条路径。 阅读全文

posted @ 2018-05-15 20:00 Deltadeblog 阅读(167) 评论(0) 推荐(0)

旋转链表
摘要:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 示例 2: 解决思路: 计算链表的长度N,指向链表最后一个节点的指针end; 实际只需移动k%N个位置; end.next=head,构成环形链表,同时移动head与end,移动N-k个位置即可。 阅读全文

posted @ 2018-05-14 19:33 Deltadeblog 阅读(148) 评论(0) 推荐(0)

螺旋矩阵 II
摘要:给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 解决思路:首先填写矩阵最外一圈,接着依次向内。 对于n行n列的矩阵,每填一圈余下的矩阵为(n-2)行(n-2)列,这个特点可以作为循环的终止条件。 代码如下: 阅读全文

posted @ 2018-05-12 20:37 Deltadeblog 阅读(156) 评论(0) 推荐(0)

跳跃游戏
摘要:给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 示例 2: 对于下标为i的元素,其能够到达的最远位置为i+nums[i]。 如示例[2,3,1,1,4], 每个元素能够到达的最远位置分别为0+2=2 阅读全文

posted @ 2018-05-10 20:08 Deltadeblog 阅读(171) 评论(0) 推荐(0)

螺旋矩阵
摘要:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 解决思路:首先读取矩阵最外一圈的元素,接着依次向内。 对于M行N列的矩阵,每读一圈余下的矩阵为(M-2)行(N-2)列,这个特点可以作为循环的终止条件。 如示例2中,首先读取1,2,3,4,8, 阅读全文

posted @ 2018-05-10 19:12 Deltadeblog 阅读(1678) 评论(0) 推荐(0)

旋转图像
摘要:给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。示例如下: 对于matrix中的元素matrix[i][j],将其旋转90度后,对应的位置为matrix[j][M-i],M为n-1 如matrix[0][0]的值为5, 旋转后matrix[0][3-0]的值为5 matr 阅读全文

posted @ 2018-05-01 11:27 Deltadeblog 阅读(334) 评论(0) 推荐(0)

两两交换链表中的节点
摘要:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 常规方法 递归方法: 阅读全文

posted @ 2018-04-26 20:42 Deltadeblog 阅读(145) 评论(0) 推荐(0)

删除链表的倒数第N个节点
摘要:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 一种方法是先计算链表的长度N,然后定位到第(N-n)个节点,删除节点(N-n+1)也即(倒数第n个节点) 代码如下: 第二种方法是,使用两个指针,首先将第一个指针置于第二个的后n+1个节点处。再同时移动两个指针,当第一个指向 阅读全文

posted @ 2018-04-25 21:21 Deltadeblog 阅读(267) 评论(0) 推荐(0)

盛最多水的容器
摘要:给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 注意:你不能倾斜容器,n 至少是2。 首先需要指出的 阅读全文

posted @ 2018-04-23 20:52 Deltadeblog 阅读(1540) 评论(0) 推荐(0)

求幂pow()
摘要:pow(x, n) 求x的n次方。 最简单的方法便是计算n个x相乘 该方法计算量较大,如pow(3, 1024)则需要1024次相乘运算。 可以将其简化为pow(9, 512),运算次数减小一半,一直简化 阅读全文

posted @ 2018-04-10 20:12 Deltadeblog 阅读(152) 评论(0) 推荐(0)

颠倒整数
摘要:给定一个 int 整数,将其颠倒。假设只能处理 32 位 int 范围内的整数。根据这个假设,如果颠倒后的结果超过这个范围,则返回 0。 123 -> 321 -123 -> -321 120 -> 21 实现方法较为简单,代码如下: if (result>Integer.MAX_VALUE/10 阅读全文

posted @ 2018-04-09 20:05 Deltadeblog 阅读(123) 评论(0) 推荐(0)

两数相加
摘要:给定两个非空链表来代表两个非负整数,位数按照逆序方式存储,它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 定义进位变量carry,记录每次相加的进位情况。 两个链表的长度可能不同,可以使用null代替没有的节点,使用0 阅读全文

posted @ 2018-04-08 21:26 Deltadeblog 阅读(591) 评论(0) 推荐(0)

导航