- 博客(21)
- 收藏
- 关注
原创 二叉树之树的子结构
1.本题知识点 二叉树2. 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)3. 思路 思路比较简单,就是在A中递归查找是否有B的root节点,有的话再判断该节点的左右节点和B中root的左右节点是否相等。 Java版本:/**public class TreeNode { int val = 0; ...
2019-06-30 22:01:09 328
原创 二叉树之重建二叉树
1.本题知识点 二叉树,递归2. 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。3. 概念解析 ① 什么是二叉树? 二叉树是每个结点最多有两个子树的树结构。二叉就是只...
2019-06-30 11:22:09 381
原创 链表之删除链表中重复的结点
1.本题知识点 链表2. 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->53. 思路 充分利用递归思想 以及对象及引用的理解: ① 先考虑没有重复节点的情况,保留当前节点,从下一个节点开始...
2019-06-28 22:02:23 313
原创 链表之链表中环的入口结点
1.本题知识点 链表2. 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。3. 思路 分为2步,用2个指针实现: ① 找环中相遇点:指针p1每次循环走1步,p2每次走2步。如果找不到相遇点,无欢输出null。 ②找环的入口:在①基础上,p2移到head,然后p1和p2每次走1步,直到相遇即为入口。 Java版本:...
2019-06-28 17:09:38 252
原创 链表之两个链表的第一个公共结点
1.本题知识点 链表,规律2. 题目描述 输入两个链表,找出它们的第一个公共结点。3. 思路 1.暴力求解:遍历一个链表的每一个节点分别与另一个链表的每一个节点就行比较,时间复杂度O(mn)。 2.空间换时间(利用栈):时间复杂度为O(m+n),但需要额外的空间 – 栈。 3.巧妙利用规律,时间复杂度为O(m+n),不需要额外的空间。我们来详细介绍这种方式。思...
2019-06-27 14:53:24 284
原创 链表之复杂链表的复制
1.本题知识点 链表,复杂问题分解,复制2. 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)3. 思路 主要分3部分: ① 复制链表中的每一个节点 ② 原链表中A指向C,那么新复制的节...
2019-06-26 16:45:30 218
原创 链表之合并两个排序的链表
1.本题知识点 链表,递归2. 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。3. 思路 ① 判空; ② 对于2个升序链表,直接比较head的大小,将小的节点比如node1输出到新链表中,然后递归进行merge(node1.next, node2)即可。 Java版本:/*public class Lis...
2019-06-25 22:13:27 426
原创 链表之反转链表
1.本题知识点 链表2. 题目描述 输入一个链表,反转链表后,输出新链表的表头。3. 思路 定义2个指针前向pre和当前cur指针。反转链表就要改变指针,改变指针就意味着丢失next节点,所以先保存next节点(定义临时变量nextTemp保存cur.next),然后改变指针方向,通过交换赋值移动指针pre和cur,继续前面的操作,直到cur.next为null时,此时cur为...
2019-06-25 17:53:10 388
原创 链表之链表中倒数第k个结点
1.本题知识点 链表2. 题目描述 输入一个链表,输出该链表中倒数第k个结点。3. 思路 Java版本:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public clas...
2019-06-25 14:31:09 302
原创 链表之从尾到头打印链表
1.本题知识点 链表,递归,栈2. 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。3. 思路 不改变链表结构,典型的后进先出场景,我们想到了栈,可以利用有序线性表结构ArrayList 递归实现。 Java版本:/*** public class ListNode {* int val;* ListNo...
2019-06-25 14:18:22 345
原创 字符串之表示数值的字符串
1.本题知识点 字符串、有限状态自动机2. 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。3. 思路 思路:首先,搞清楚组成数字的4个部分: ① ...
2019-06-25 14:09:56 880
原创 通俗理解KMP算法
前言 因为最近在刷剑指,看到有大神用自动机,然后就研究了下,进而看了看KMP算法,但是很多资料感觉太啰嗦,看起来着实有点费劲,所以,结合自己的理解,想写一篇简易通俗的KMP。 ☆☆☆ 算法目录导航页,包含基础算法、高级算法、机器学习算法等☆☆☆ 1.KMP的定义 KMP其实就是一种改进的字符串匹配(查找)算法,为什么叫KMP呢,是因为其发现者Knuth-M...
2019-06-19 20:48:10 802
原创 字符串之正则表达式匹配
1.本题知识点 字符串、递归2. 题目描述 请实现一个函数用来匹配包括 . 和 * 的正则表达式。模式中的字符 . 表示任意一个字符,而 * 表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。3. 思路 这题对编程来说没多大难度,...
2019-06-12 14:41:33 13004 1
原创 字符串之把字符串转换成整数
1.本题知识点 char转int,int范围2. 题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数...
2019-06-10 15:32:38 1385
原创 字符(Java Char)对应的ASCII码大全(十进制0 ~ 255)
十进制代码 十六进制代码 MCS 字符或缩写 DEC 多国字符名 ASCII 控制字符 1 0 0 ...
2019-06-10 15:19:01 13176
原创 剑指offer刷题汇总
前言 从今天开始在牛客刷剑指offer,希望每天打卡几个算法,提高自己的编程水平。在CSDN做一下记录,随时更新,一起学习吧。目录大全数组剑指offer ( 一 ):二维数组中的查找剑指offer ( 六 ):旋转数组的最小数字剑指offer ( 十三 ):调整数组顺序使奇数位于偶数前面【代码完整性】剑指offer(二十八):数组中出现次数超过一半的数字【 时间效率】...
2019-06-02 22:26:17 5544 2
原创 字符串之翻转单词顺序列
1.本题知识点 字符串2. 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,...
2019-06-02 22:25:46 574
原创 字符串之左旋转字符串
1.本题知识点 字符串2. 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!3. 思路 利用字符串的截取函数即可,非常简单。 ...
2019-06-02 22:06:36 188
原创 字符串之第一次只出现一次的字符
1.本题知识点 哈希表,ASCII码2. 题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).3. 思路 把字母的ASCII码值当成索引建立哈希表(通过ASCII码映射到内存中唯一存储位置,存储记录的数组叫散列表,即哈希表(HashTable), 哈希算法为A...
2019-06-02 11:18:22 432
原创 字符串之字符串的排列
1.本题知识点 回溯法,递归,分解让复杂问题简单2. 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。3. 思路 首先固定第一个字符,依次将第一个字符与...
2019-06-01 23:18:29 345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人