随笔分类 - 算法题
摘要:给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。 思路分析 当我看到这道题的第一想法是用三指针的方法解决:index1指向s1,index2指向s2,index3指向s3。按照顺序判断s3的字符是否与s1、s2的字符一致,即先与s1判断,不一致再与s2判断;
阅读全文
摘要:二叉树的所有路径 给定一个二叉树,返回所有从根节点到叶子节点的路径。 算法分析: 假设起始节点为1;先搜索1节点的右子节点为2,此时将1节点置为已搜索状态;判断2节点是否为已搜索状态,若未搜索,则将2节点置为已搜索状态;每次都优先搜索判断右侧邻接节点; 如图所示,若此时已搜索至2节点,发现右子节点为
阅读全文
摘要:四、 递归 1. 概念 简单来说,递归就是方法自己调用自己,每次调用时传入不同的变量。 2. 递归的调用规则 public static void main(String args[]) { test(4); } public static void test(int n) { if(n > 2)
阅读全文
摘要:二、链表 1、介绍 链表是一个有序的列表,上一个数据连接下一个数据,通过链表指针连接,顺序不可改变。 看一下链表在内存中的存储结构: 1. 链表是以节点的形式存储在内存空间中,是链式存储; 2. 每个节点包括data域(存储数据)和next域(存储指向下一节点的地址值); 3. 虽然节点是有顺序的,
阅读全文
摘要:给定一个可包含重复数字的序列,返回所有不重复的全排列 这题与上题的全排列问题类似,问题在于如何将重复序列排除在外。 这里就需要剪枝思想,即去掉多余的子树。 我们先看图,令nums=[1,1`,2] 图中可以看出,[1 ]节点选择子节点时与[1]节点选择时一致,故应该去除。类推。 再看如何判断剪枝:
阅读全文
摘要:问题:给定一个 没有重复 数字的序列,返回其所有可能的全排列 全排列问题实际可以看作是树形结构 而dfs算法在树形结构中的应用就是回溯算法。 接下来详细解释回溯算法的思想: 如图所示:在本题中,树形结构的根节点为空,根节点的第一个子节点通过遍历找到[1],继续遍历找到[1]的子节点[2],[2]的子
阅读全文
摘要:有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同。 游戏从「一号」玩家开始(「一号」玩家为红色,「二号」玩家为蓝色),最开始时, 「一号」玩家从 [1, n] 中取一个值 x(1 获
阅读全文
摘要:问题:给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。 在此题中,我们使用一个新的链表list存储headA,然后将B的引用和list的引用对
阅读全文
摘要:问题:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。 如何将整数中的每位数取出呢? 进行循环模运算,判断条件为整数x 0。但由于题目条件为有符号整数,故将判断条件修改为x
阅读全文