10-I. 斐波拉契数列 题意:面试题10- I. 斐波那契数列 思路:最基础的动态规划题。数据量比较大的时候不能使用递归,会报StackOverFlow Exception,最优的方式是迭代计算。 class Solution { public int fib(int n) { if (n <= ...
分类:
其他好文 时间:
2020-07-19 23:20:11
阅读次数:
72
1、简述DNS服务器原理,并搭建主-辅服务器。 DNS服务器原理 DNS服务器会同时监听tcp和udp的53端口,在客户端解析域名时,使用udp的53端口;在主从服务器同步中tcp和udp都要用到。 解析域名的方式有两种:迭代查询和递归查询,默认使用递归查询 迭代查询:由客户端自己一步一步的查询结果 ...
分类:
其他好文 时间:
2020-07-19 23:06:11
阅读次数:
50
归并排序 归并排序介绍**:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。* ...
分类:
编程语言 时间:
2020-07-19 17:52:55
阅读次数:
58
给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? ## 迭代 class Solution: def inorderTraversal(self, root: TreeNod ...
分类:
其他好文 时间:
2020-07-19 11:38:09
阅读次数:
55
简介 归并排序简称Merge sort是一种递归思想的排序算法。这个算法的思路就是将要排序的数组分成很多小的部分,直到这些小的部分都是已排序的数组为止(只有一个元素的数组)。 然后将这些排序过的数组两两合并起来,组成一个更大一点的数组。接着将这些大一点的合并过的数组再继续合并,直到排序完整个数组为止 ...
分类:
编程语言 时间:
2020-07-19 11:29:35
阅读次数:
61
1.堆栈(stack),其实就是堆,为什么加堆,我查了了一下,似乎是历史原因,在栈的实现时,内存中的资源分配是以堆的逻辑分配的(使用malloc函数申请内存时),故叫堆栈,其实我们研究其栈的主要性质就可以了,内存中的分配是操作系统和计算机组成原理研究的问题。 2.栈的主要思想就是后进先出,与之相关的 ...
分类:
其他好文 时间:
2020-07-19 00:57:20
阅读次数:
117
中序。 刚拿到题目时,第一想法是递归,但是搞错了二叉搜索树成立的条件。 我以为的条件是:左侧树为二叉搜索树,右侧树为二叉搜索树,且root.right>root>root.left,然后递归。 但是显然这不对,满足以上条件后,root.right.left可能比root要小。 先说正确的递归解法:正 ...
分类:
其他好文 时间:
2020-07-18 22:03:27
阅读次数:
71
题目链接:https://leetcode-cn.com/problems/flip-equivalent-binary-trees/ 解题思路:进行递归,当root1和root2都为空时,返回true,如果双方一个不为空,另一个为空为或双方根节点值不相等false,否则对左右子树分别不翻转判断或翻 ...
分类:
其他好文 时间:
2020-07-18 21:54:16
阅读次数:
70
题目 97. 交错字符串 我的思路和实现 我的思路是给s1,s2和s3各设置一个指针,用来指示当前待匹配的字符 递归思路解决: 算法应该没有逻辑问题,可是会递归+回溯时间复杂度较大,达到了2^n级别 class Solution { public: bool result; void recursi ...
分类:
其他好文 时间:
2020-07-18 13:46:58
阅读次数:
56
Java顺序查找、二分查找 查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,只需要一个个对比即可,但其实效率很低。 顺序查找 动图演示 详细代码 // 顺序查找 public static boolean search(int[] arrray, int key) { for (in ...
分类:
编程语言 时间:
2020-07-18 13:34:27
阅读次数:
57