![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
secowo
这个作者很懒,什么都没留下…
展开
-
剑指offer之矩阵中的路径
问题描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 [abcesfcsadee] \begin{bmatrix} a & b & c &e \\ s & f & c & s \\ a & d & e& e\\ \end{bmatri原创 2020-12-18 11:14:46 · 120 阅读 · 0 评论 -
剑指offer之找到第一个公共节点
题目概述 输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 解题思路 假设右连个链表A和B,存在着相同的公共节点 A与B节点到公共节点的长度不同,设A的长度为a,B的长度为b,则有 a+b == b+a 代码实现为: /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.原创 2020-11-10 20:47:22 · 90 阅读 · 0 评论 -
剑指offer之平衡二叉树
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 解题思路 首先我们要了解平衡二叉树是什么?平衡二叉树是空树或者树的左右子树的高度之差不大于1,已经左右子树都为平衡树,这个树才能称之为平衡二叉树。 上图中,只有右边的树才能是平衡二叉树。因为左边的树的节点2与节点7的高度之差为2,所以不是平衡二叉树。 容易出错的点 我把平衡二叉树的概念搞错了,我把节点的左右子树的高度之差理解为了左右子树节点总数之差。 要注意平时对数据结构概念的理解!!!原创 2020-11-10 20:26:00 · 118 阅读 · 0 评论 -
剑指offer之打印二叉搜索树中第k小的结点
题目概述 给定一棵二叉搜索树,请找出其中的第k小的结点。 解题思路 一开始我没有注意到二叉搜索树这个词,我还是以为是一个普通的二叉树,所以我就按照我的想法,将二叉树的节点放入到一个数组中。 我的解题的思路 由于一开始我没有注意到二叉搜索树这个概念,所以的我的思路是按照普通二叉树的查找进行的,具体思路如下所示: 首先判断当前节点是否为空,k是否小于0.如果为真,则返回的是null 新建一个长度为k个数组,这个数组中将按照Node的val进行排序,排序函数为moveArr moveArr函数中定义了将节点按照原创 2020-11-09 22:30:13 · 113 阅读 · 0 评论 -
剑指offer之打印超过数组一半的数字
问题描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解题思路 该问题有很多种解法,其中包括了使用HashMap、排序与候选法进行解题。 这里主要是讲解有关于使用候选法来解决这道算法问题。 候选法 一开始,我在看到这个问题的第一反映是通过哈希表来解决这个问题。当我使用了HashMap方法解决了这个问题之后,我觉得这道题应该不是考察使用哈希表来原创 2020-11-09 21:30:08 · 108 阅读 · 0 评论