07 2019 档案

摘要:可以先想下这两个问题: 1、怎样使用滑动窗口? 2、如何快速的解决字符查重问题? 滑动窗口 可以想象一下有两个指针,一个叫begin,一个叫now 这两个指针就指定了当前正在比较无重复的字符串,当再往后读取一个字符的时候,就需要比较该字符在begin到now之间是否有重复,如果有重复的话,则记录当前 阅读全文
posted @ 2019-07-16 22:26 努力爬呀爬 阅读(251) 评论(0) 推荐(0)
摘要:这里先简单说下最大堆的基本性质: 最大堆一定是完全二叉树 当父节点为 n 时,左孩子为 n 2 + 1,右孩子为 n 2 + 2 当孩子为 n 时,其父节点为: (n 1) / 2 这一点很重要,在后面初始化的时候会用到 父节点大于等于左孩子和右孩子,但左孩子不一定大于右孩子 了解以上基本性质之后, 阅读全文
posted @ 2019-07-16 00:26 努力爬呀爬 阅读(7997) 评论(0) 推荐(0)
摘要:这个看着应该是使用堆排序,但我图了一个简单,所以就简单hash表加选择排序来做了。 使用结构体: 思路: hash表用来存储每个值对应的频率,每读到一个数字,对应的频率就加1。 然后从表中再把这些数据读取出来。 先创建两个长度为k的数组,一个用来记录频率,一个用来记录对应的数值。 读取数据的时候,使 阅读全文
posted @ 2019-07-12 00:44 努力爬呀爬 阅读(276) 评论(0) 推荐(0)
摘要:如果这个: "leadcode的Hot100系列 62. 不同路径 简单的动态规划" 看懂的话,那这题基本上是一样的, 不同点在于: 1、这里每条路径相当于多了一个权值 2、结论不再固定,而是要比较不同走法哪个权值更小 针对第一点,需要把第一行和第一列的权值做一个累加: 假设这里的权值都是1,则 | 阅读全文
posted @ 2019-07-10 00:03 努力爬呀爬 阅读(454) 评论(0) 推荐(0)
摘要:题目比较清晰,简单来说就是: | A | B | C | D | | | | | | | E | F | G | H | | I | J | K | L | 只能往右或者往下,从A到L,能有几种走法。 这里使用动态规划的方法来做一下。 动态规划最重要的就是动态方程,这里简单说下这个动态方程怎么做出来 阅读全文
posted @ 2019-07-09 23:29 努力爬呀爬 阅读(400) 评论(0) 推荐(0)
摘要:提交leetcode的时候遇到了问题,一直说访问越界,但仔仔细细检查n多遍,就是检查不出来。 因为我用到了count全局变量,自加一来表明当前数组访问的位置, 后来突然想到,是不是在leetcode在运行测试用例的时候,是连续测试的,用的同一个上下文,这样的话,就没有对这个全局变量清零…… 果然,清 阅读全文
posted @ 2019-07-05 03:50 努力爬呀爬 阅读(334) 评论(0) 推荐(0)
摘要:上一篇说了使用位运算来进行子集输出,这里使用回溯的方法来进行排序。 回溯的思想,我的理解就是: 把解的所有情况转换为树或者图,然后用深度优先的原则来对所有的情况进行遍历解析。 当然,因为问题中会包涵这各种各样的限制条件,我们可以用这些限制条件去减少遍历的分支。 其实,比较著名的就是0 1背包问题,这 阅读全文
posted @ 2019-07-04 00:18 努力爬呀爬 阅读(340) 评论(0) 推荐(0)
摘要:看一个数组的子集有多少,其实就是排列组合, 比如:[0,1] 对应的子集有:[] [0] [1] [1,1] 这四种。 一般对应有两种方法: 位运算 和 回溯 。 这里先使用位运算来做。 位运算 一个长度为n的数组,对其做排列组合,可以理解为:这n个数字中,有哪些是存在的,哪些是不存在的。 例如,数 阅读全文
posted @ 2019-07-03 02:31 努力爬呀爬 阅读(286) 评论(0) 推荐(0)
摘要:栈:先入后出,后入先出 像电梯一样,先进入电梯的,走到电梯最深处,后进入电梯的,站在电梯门口, 所以电梯打开的时候,后进入的会先走出来,先进入的会后走出来。 push,对应入电梯,把数据往里面压 pop, 对应出电梯,把数据往外拿 栈顶,对应电梯门口 栈底,对应电梯最深处 这里使用链表实现栈。 先创 阅读全文
posted @ 2019-07-02 23:23 努力爬呀爬 阅读(201) 评论(0) 推荐(0)
摘要:这里使用两种方式, 一个是直接从头往后遍历 迭代 一个是从最后一个往前遍历 递归 迭代 定义三个变量:pPre pNext pNow pPre表示当前节点的前一个地址,pNext表示当前节点的下一个地址,pNow表示当前节点的地址。 反转的核心:就是把 pNow的next指针,指向 pPre 因为反 阅读全文
posted @ 2019-07-02 00:15 努力爬呀爬 阅读(229) 评论(0) 推荐(0)
摘要:依然使用递归思想。 思路: 1、树的深度 = max (左子树深度,右子树深度)+ 1 。 这里的加1是表示自己节点深度为1。 2、如果当前节点为null,则说明它的左右子树深度为0。 阅读全文
posted @ 2019-07-01 22:04 努力爬呀爬 阅读(163) 评论(0) 推荐(0)
摘要:这玩意儿基本上还是遍历的那一套, 这里使用先序遍历的方式,直接对左右子树进行对调即可。 (虽然看题目的时候,感觉都一样,但真正写出来之后,印象还是深刻了很多) 阅读全文
posted @ 2019-07-01 01:23 努力爬呀爬 阅读(145) 评论(0) 推荐(0)
摘要:合并,就是两个树的结构交集部分,数据相加,否则,取非空部分。 所以,这里相当于是对两棵树同时遍历: 如果两棵树节点都不为空,则数据相加, 否则,直接指针把不为空的节点复制过来。 注:这里没有申请内存,而直接对原有的树进行改造,这样可以节省申请内存的时间,且节省一些内存。 阅读全文
posted @ 2019-07-01 01:01 努力爬呀爬 阅读(157) 评论(0) 推荐(0)
摘要:很多题目涉及到二叉树,所以先把二叉树的一些基本的创建和遍历写一下,方便之后的本地代码调试。 为了方便,这里使用的数据为char类型数值,初始化数据使用一个数组。 因为这些东西比较简单,这里就不做过多详述。 创建 1、定义一些内容: 2、使用递归方式创建原始二叉树。 其基本思想与先序遍历基本一样,只不 阅读全文
posted @ 2019-07-01 00:37 努力爬呀爬 阅读(399) 评论(2) 推荐(1)