05 2018 档案

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

posted @ 2018-05-31 21:05 Deltadeblog 阅读(233) 评论(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 阅读(271) 评论(0) 推荐(0)

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

posted @ 2018-05-18 20:50 Deltadeblog 阅读(253) 评论(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 阅读(170) 评论(0) 推荐(0)

使用广度优先搜素查找路径
摘要:使用深度优先搜索可以找到一个顶点到其他顶点的路径,但该路径不一定是最短路径。 广度优先搜索可以找到点与点之间的最短路径。 实现方法 先将起点加入队列,让后重复一下步骤直到队列为空: 取队列中的下一个顶点v并标记它; 将与v相邻的所有未被标记的顶点加入队列。 示例: 首先顶点0加入队列中,然后开始循环 阅读全文

posted @ 2018-05-16 21:02 Deltadeblog 阅读(231) 评论(0) 推荐(0)

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

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

使用深度优先搜索查找路径
摘要:给定图G及起点s,查找从s到其他顶点的路径。 设计一个类实现该算法,类的API如下: 基于深度优先搜索实现路径查找,该算法扩展深度优先搜索,在原算法的基础上添加一个实例变量edgeTo[],这个数组用于记录每个与s连通的顶点回到s的路径。 如下图: edgeTo[]的值为: 节点1与2(数组下标表示 阅读全文

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

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

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

深度优先搜索
摘要:深度优先搜索用于寻找图(G)中与顶点s连通的其它顶点。 设计一个类实现该算法,类的API如下: 算法实现 用递归的方法来遍历所有的顶点,在访问一个顶点时: 将它标记为已访问; 递归的访问它的没有被标记的邻接点。 实现代码如下: 测试下图,与顶点0连通的顶点 输出结果:0 1 2 3 4 5 6 阅读全文

posted @ 2018-05-14 20:24 Deltadeblog 阅读(140) 评论(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)

java 迭代
摘要:迭代器的作用是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节。 java中的很多容器都实现了Iterable接口,容器中的元素都是可以遍历的。 如下例,list容器中存储的是Integer对象,list可以返回一个Iterator对象用于遍历list中的元素。 一种更 阅读全文

posted @ 2018-05-13 17:24 Deltadeblog 阅读(210) 评论(0) 推荐(0)

表示图的数据类型
摘要:有多种数据结构可以表示图(如邻接矩阵、邻接表数组),这里探讨的是使用邻接表数组表示图。 邻接表数组:使用一个以顶点为索引的列表数组,每个数组元素为一个Bag对象,对象中存储的是所有与该顶点相邻的顶点。(Bag类似于栈Stack,只能向其中添加元素)。 如下图及其邻接表数组: 由于Graph的实现需要 阅读全文

posted @ 2018-05-13 16:43 Deltadeblog 阅读(637) 评论(0) 推荐(0)

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

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

java Collections.sort()
摘要:sort()是Collections中的静态方法,用于对List容器中的元素排序。 如容器list中存储的是Integer对象 输出结果为:[3, 2, 7, 5, 9, 6] 使用Collections.sort()对list排序 输出结果为:[2, 3, 5, 6, 7, 9] 使用Collec 阅读全文

posted @ 2018-05-12 11:16 Deltadeblog 阅读(185) 评论(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 阅读(1677) 评论(0) 推荐(0)

java 泛型与通配符(?)
摘要:泛型应用于泛型类或泛型方法的声明。 如类GenericTest 有该类生成对象时可以选择相应的类型,GenericTest<Integer> test = new GenericTest<>(); GenericTest<String> test = new GenericTest<>(); jav 阅读全文

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

java 子类父类相互转换
摘要:子类转父类 (父类引用指向子类对象) 子类可以转换为父类,如下父类FruitTest与其子类AppleTest FruitTest obj = new AppleTest(); 是正确的 obj.str 结果为"FruitTest",不是子类中的str("AppleTest")。obj的属性变量都是 阅读全文

posted @ 2018-05-02 21:27 Deltadeblog 阅读(18184) 评论(1) 推荐(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 阅读(333) 评论(0) 推荐(0)

导航