面试
那个松鼠很眼熟
这个作者很懒,什么都没留下…
展开
-
生成N个不重复的随机数
问题描述:给定一个正整数n,需要输出一个长度为n的数组,数组元素顺序随机分布,范围为0 – n-1,且元素不能重复。 解决思路: 1)、声明一个数组N[n],并赋初值{0、1、2、3、……、n-1}; 2)、设一变量“m=n-1”; 3)、生成[0,m]间的随机数“x”,将N[x]与N[m]元素互换; 4)、对“m”做“m=m-1”,并返回到“3)”,直到“m=0”; 5)、完成上述操...原创 2018-10-10 23:11:49 · 4467 阅读 · 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],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4...原创 2018-10-07 05:33:31 · 1548 阅读 · 0 评论 -
数组中的逆序对(分治、递归与合并)
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围: 对于%50的数据,size<=10^4 对于%75的数据,size<=10^5 对于%100的数据,si...原创 2018-10-07 20:32:36 · 683 阅读 · 0 评论 -
linux小知识点
>: 会重写文件,如果文件里面有内容会覆盖。>>: 这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件。就是如果文件里面有内容会把新内容追加到文件尾。$# 是传给脚本的参数个数$0 是脚本本身的名字$1 是传递给该shell脚本的第一个参数$2 是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表$* 是以一个单字符串显示所有向脚本传...原创 2018-10-09 18:59:21 · 320 阅读 · 0 评论 -
快速幂
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。将任何一个数二分直至等于1的方法:偶数时除以2,奇数时减1或者加1. 如9-8-4-2-1,以及 14-7-6-3-2-1. 快速幂就是这个思想,它把b^n拆成(b^(n/2))*(b^(n/2)).从而实现跳跃式叠次方。常规求幂:double Power(double ...原创 2018-10-08 08:11:03 · 332 阅读 · 0 评论 -
一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数(数组指针 指针数组)
依照题意依次写出即可:一个有10个指针的数组:*a[10];该指针指向一个函数:(*a[10])();该函数有一个整形参数: (*a[10])(int);并返回一个整型数: int (*a[10])(int)所以int (*a[10])(int)就是答案。阅读这种表达式的时候可以遵循以下的规则:从右向左,由近及远,括号优先;比如从a符号开始。其右边是[10],说明a是个数组...原创 2018-09-04 05:10:10 · 26388 阅读 · 1 评论 -
用数字组成数的种类个数
题目:用 0,1,2,3,4,5 组成没有重复数字的四位数,其中千位数字大于百位数字且百位数字大于十位数字的四位数的个数是多少?思路:从六个数字中选取三个作为千百十位,因为有大小限制,所以他们之间的顺序一旦选定后就是固定的了。共C(3,6)种取法。再从剩下的三个数中选择一个作为个位,有C(1,3)种取法。 共C(3,6)*C(1,3)=60种.红字部分很难想到~ 另外本题不需要去管0作...原创 2018-08-28 05:52:37 · 1661 阅读 · 0 评论 -
A/B/C类ip地址 掩码 广播地址 路由汇集 保留地址
IP地址由两部分组成,即网络地址和主机地址。网络地址表示其属于互联网的哪一个网络,主机地址表示其属于该网络中的哪一台主机。二者是主从关系。不同网络地址之间的主机不能直接通信! IP地址的四大类型标识的是网络中的某台主机。IPv4的地址长度为32位,共4个字节,但实际中我们用点分十进制记法。IP地址根据网络号和主机号来分,分为A、B、C三类及特殊地址D、E。 全0和全1的都保留不用。 ...原创 2018-09-04 17:18:21 · 6231 阅读 · 0 评论 -
哈夫曼树 和 树的带权路径长度
树的带权路径长度(Weighted Path Length of Tree):定义为树中所有叶结点的带权路径长度之和。结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。哈夫曼树是一种带权路径长度最短的二叉树,也称为最优二叉树。 哈夫曼树构建教程 https://blog.csdn.net/xueba8/article/details/78477892例:对于给定的一...转载 2018-08-28 04:37:41 · 20299 阅读 · 5 评论 -
*p++
题目:在 VS编译器以下程序的输出结果是 1 2 3 char s[] = "123", *p; p = s; printf("%c\n", *p++); 从优先级上讲,自增操作符++ 高于 *,所以 *p++ 等同于 *(p++)。也就是先取出 p 所对应地址处的值,然后让 p++.等同于 x=y++, 先把y...原创 2018-08-28 04:21:29 · 531 阅读 · 0 评论 -
i++ 是线程安全的吗?
i++不是原子操作,也就是说,它不是单独一条指令,而是3条指令(3条汇编指令):1、从内存中把i的值取出来放到CPU的寄存器中2、CPU寄存器的值+13、把CPU寄存器的值写回内存由于线程共享栈区,不共享堆区和全局区,所以当且仅当 i 位于栈上是安全的,反之不安全(++i也同理). 因为如果是全局变量的话,同一进程中的不同线程都有可能访问到。对于读值,+1,写值这三步操作,在这...原创 2018-08-28 03:06:43 · 1527 阅读 · 0 评论 -
0827日志
在某编程题中,要遍历取三个点。取了点i和j后,开始遍历第三个点,为了让第三个点不与前两个点重复,想当然的写作:for (int k = 0; k!=i && k!j && k < ox.size(); k++) {看了半天才恍然大悟。。。 for的第二个判断语句是继续循环的条件!也就是说一旦不符合,就会直接退出循环! 所以应该改写成下面的形式才...原创 2018-08-27 20:25:50 · 102 阅读 · 0 评论 -
判断三点共线
题目:已知平面上的三点P1(x1,y1),P2(x2,y2),P3(x3,y3), 判断它们是否共线。 方法一:判断向量(p1-->p2)和向量(p1-->p3)的斜率是否相等。即 (y2-y1)/(x2-x1) == (y3-y1)/(x3-x1). 这个除式判断可以改写成乘式判断:(y3−y1)(x2−x1)−(y2−y1)(x3−x1)=0 (改写的原因是除法有分母为...原创 2018-08-27 18:38:22 · 26662 阅读 · 4 评论 -
float, double 的表示范围和精度
float:1bit(符号位)+8bits(指数位)+23bits(尾数位)double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)[尾数是指把一个二进制改写成标准的科学计数法 (必须以1.XX的形式,例如1.001*2^1101) 后,小数点后面的小数部分(001)。][指数位的第一位也是符号位](浮点)数值 =(符号) (1.尾数)×(2)^(带符号的...原创 2018-08-27 18:35:33 · 7275 阅读 · 1 评论 -
STL中的 sstream.h 头文件
#include <iostream>#include<sstream>int main() { string str; while (cin >> str) { istringstream in(str); int a, b; char c; in.clear(); in >> a >> c >>...原创 2018-07-06 04:53:03 · 582 阅读 · 0 评论 -
用一个单层循环遍历矩阵
for (int i = 0; i < M*N; i++){ cout<<matrix[i / N][i % N];}原创 2018-08-25 22:40:26 · 613 阅读 · 0 评论 -
【数据库】事务、事务的四大特性(ACID)、三大并发问题、四种锁、四大隔离级别以及它们的实现
数据库事务事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。(数据库引擎innoDB是支持事务的(默认每一条sql语句为一个事务),MyISAM不支持事务。)在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。 开始事务:BEGIN TRANSACTION(事务) 提交事...原创 2018-09-20 22:10:18 · 3158 阅读 · 0 评论 -
前缀树( 又名:TRIE树、单词查找树、字典树) 和 后缀树(Suffix树)
概念前缀树:将海量字符串存储在一棵树中。后缀树:将一个字符串分解成一棵树。前缀树 节点的结构体:struct trieNode { bool isEnd;//是否可以作为字符串的终结节点 trieNode *child[26];}前缀树:class Trie {private: trieNode *root;public: Trie()...原创 2018-09-12 21:51:39 · 1222 阅读 · 0 评论 -
最小比较次数问题的通用解法
题目:从N个无序数中找到最大数(或者:最大数和最小数、最大的前K个数),需要的最小比较次数。思路:用递归公式。设N个数所需要的比较次数为F(N), 将比较过程划分成更小的部分。求递推公式的解。划分的第一步永远是:分成N/2组一对一比较,形成两大阵营:胜者组和败者组。题目一:从N个无序数中找到最大数先分成N/2个胜者和N/2个败者,需要N/2的比较次数。然后从N/2规模的胜者组中找到...原创 2018-09-07 00:28:22 · 1779 阅读 · 0 评论 -
进程的内存分布
参考博文:https://blog.csdn.net/qq_26685951/article/details/76920326 一个进程的内存主要分为五部分:text(文本/代码段),initialize data(数据段),uninitialized data(未初始化数据段),heap(堆),stack(栈),如下图: 1.文本段也叫代码段,是对象文件或内...转载 2018-09-04 04:50:39 · 5692 阅读 · 0 评论 -
最小生成树的两个算法之二:kruskal算法
介绍kruskal算法之前需要了解一个很重要的数据结构:并查集 参考博文:https://www.cnblogs.com/yoke/p/6697013.html基本概念树(Tree):如果一个无向连通图中不存在回路,则这种图称为树。生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的所有顶点的树,则该子图称为G的生成树。生成树是连通图的极小连通子图。这里所谓...转载 2018-09-11 22:08:54 · 259 阅读 · 0 评论 -
并查集 union find
https://www.cnblogs.com/hapjin/p/5478352.htmlhttps://segmentfault.com/a/1190000004023326关于并查集的基本概念,可以参考这篇通俗有趣的博文:https://blog.csdn.net/u013546077/article/details/64509038并查集的数据结构(父节点数组+两个函数)并查...转载 2018-09-11 21:33:48 · 450 阅读 · 0 评论 -
getline(cin,str,'#')
获取以#之前的所有输入。原创 2018-08-30 14:55:43 · 210 阅读 · 0 评论 -
【后台开发】面试题汇总
1原创 2018-05-11 10:57:09 · 502 阅读 · 0 评论