上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页
摘要: 随机洗牌算法: 时间和空间复杂度都为O(n)。 可以由概率算出,每个数(每张牌)在每个位置的概率都是1/maxn。 阅读全文
posted @ 2017-11-28 12:57 叶建成 阅读(345) 评论(0) 推荐(1) 编辑
摘要: 请你想出一个算法求出n以内(含n)的所有素数,要求算法的时间复杂度越小越好。 这里介绍一种算法——快速线性素数筛法(欧拉筛法),时间复杂度O(n)。 诀窍在于:筛除合数时,保证每个合数只会被它的最小质因数筛去。因此每个数只会被标记一次,所以算法时间复杂度为O(n)。 具体请看下面的代码,主要函数是P 阅读全文
posted @ 2017-11-10 23:18 叶建成 阅读(9063) 评论(8) 推荐(1) 编辑
摘要: 在使用GNU GCC Compiler的时候,你可以包含一个头文件<bits/stdc++.h>,便可以使用C++中的各种标准库,而不用一个一个包含进来。 这在acm比赛中是一种常用的做法。接下来给大家看一下bits目录下的stdc++.h: 这样在编程的时候就可以这样子做: 如图: 简单方便不是吗 阅读全文
posted @ 2017-11-08 09:39 叶建成 阅读(12052) 评论(0) 推荐(1) 编辑
摘要: 在Windows中将Sublime Text配置成C++的IDE。首先,为了运行C++需要安装g++编译器,g++可直接在codeblocks中找到。codeblock的官网下载地址是http://www.codeblocks.org/downloads/26。大家可以下载一个较全的codebloc 阅读全文
posted @ 2017-11-08 00:03 叶建成 阅读(13357) 评论(2) 推荐(1) 编辑
摘要: 题目描述: 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3 阅读全文
posted @ 2017-11-03 16:29 叶建成 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c es f c sa d e e 矩阵中 阅读全文
posted @ 2017-11-03 16:27 叶建成 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4 阅读全文
posted @ 2017-11-03 16:21 叶建成 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 分析: 插入排序。 代码: 阅读全文
posted @ 2017-11-03 15:49 叶建成 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给定一颗二叉搜索树,请找出其中的第k大的结点。 例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4 分析: 二叉搜索树中序遍历就是从小到大。只要遍历k个结点就可以了。 代码: 阅读全文
posted @ 2017-11-03 12:11 叶建成 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 请实现两个函数,分别用来序列化和反序列化二叉树 分析: 先序遍历可以用来序列化二叉树,序列化过程中,我们用“0xFFFFFFFF”表示结点为NULL。 反序列化便很简单,遇到“0xFFFFFFFF”就返回NULL,其他时候就直接产生一个结点。 代码: 阅读全文
posted @ 2017-11-03 12:07 叶建成 阅读(259) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页