
编程基础知识汇总
卡帕kalper
逐光。
展开
-
剑指offer - 复杂链表的复制
题目:实现函数 ComplexListNode* Clone( ComplexListNode* pHead ), 复制一个复杂链表,在复杂链表中除了有一个 pNext 指针指向下一个结点外,还有一个 pSibling 指向链表中的任意结点或者NULL, 结点定义如下:struct ComplexListNode{ int value; ComplexListNode* pNe原创 2015-10-02 18:07:34 · 468 阅读 · 0 评论 -
MAC OS查看端口占用情况及杀死进程
终端命令sudo lsof -i :9000COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEjava 716 a 313u IPv6原创 2015-11-10 21:02:58 · 96990 阅读 · 0 评论 -
剑指offer - 将字符串中空格替换为20%
将一个字符串中的所有空格替换成 20%,最直观的做法是从头到尾扫描字符串,然后每次碰到字符串时便替换,并将空格后面所有的字符向后移两个字节。假设字符串长度为n,对每个空格字符,需要移动后面O(n)个字符,因此对含有n个空格的字符串而言总的时间效率是O(n^2) 。时间复杂度达到n平方,说明程序效率并不高,因此可以采用另一种做法,就是先遍历一边字符串,计算出空格的数目,然后从字符串的后面开始原创 2015-09-20 01:12:18 · 615 阅读 · 0 评论 -
剑指offer - 二维数组的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列。如何在该数组中查找是否含有该整数由于该数组的特殊性,我们可以采用如下算法进行查找:首先选取数组中右上角的数字,如果该数字等于要查找的数字,则结束查找过程;如果该数字大于要查找的数字,剔除这个数字所在的列;如果该数字小于要查找的数字,则剔除该数字所在的行。代码实现:bool fin原创 2015-09-19 21:27:41 · 392 阅读 · 0 评论 -
剑指offer - 实现Singleton模式
由于只生成一个实例,因此需要将类的构造函数设为私有,然后生成实例的功能由它内部的函数去实现:解法一:(只适用于单线程模式)在多线程情况下,下面的代码可能会因为有多个线程同时执行到 if 判断语句,然后同时创建了Singleton的多个实例,从而破坏了单例模式。class Singleton{ private static Singleton single = null; priva原创 2015-09-19 18:25:02 · 548 阅读 · 0 评论 -
易忘知识整理
1、C++中的 vector 是一种动态数组,为了避免浪费,一般我们先为数组开辟较小的空间,然后往数组中添加数据。每次插入数据需要对vector扩容时,新的容量都扩展成原来的两倍,然后再把之前的数据复制到新的数组中;2、假设有 int array[ ] = {1, 2, 3, 4, 5}, 则求得 sizeof( array ) 值为 20。若是定义一个指针指向该数组或者是将该数组作为原创 2015-09-19 21:05:43 · 429 阅读 · 0 评论 -
剑指offer - 赋值运算符函数
如下为类型CMyString的声明,为该类型添加赋值运算符函数:class CMyString{ public : CMyString(char* pData = NULL); CMyString(const CMyString& str); ~CMyString(void); private : ch原创 2015-09-19 12:16:13 · 729 阅读 · 0 评论 -
剑指offer - sizeof问题
1、定义一个空的类型,里面没有任何成员变量与成员函数,对该类型求 sizeof, 得到的结果为 1。解析:空类型的实例中不包含任何信息,本来求sizeof应该是0,但是由于我们声明该类型时,它必须在内存中占据一定的空间,否则无法使用这些实例。而占用多少内存,这是由编译器决定的。在Visual Studio中每个空类型的实例占用1字节的空间2、如果在该空类型中添加一个构造函数和析构函原创 2015-09-19 11:23:25 · 527 阅读 · 0 评论 -
const 使用过程中的难点和区别
如果函数需要传入一个指针,面试官可能会问是否需要为该指针加上const,把const加在指针不同的位置有什么区别;如果写的函数需要传入的参数是一个复杂类型的实例,面试官可能会问传入值参数或者引用参数有什么区别,什么时候需要为传入的引用参数加上const。 const是用来声明一个常量的,当你不想让一个值被改变时就用const,const int max和int const max 是没有区别的原创 2015-09-18 12:10:35 · 1030 阅读 · 0 评论 -
剑指offer - 二叉搜索树转双向链表
题目:输入一棵二叉搜索树,将其转为排序的双向链表,且要求不能创建任何新的结点,只能调整树中结点指针的指向。二叉树结点定义如下:struct BinaryTreeNode{ int value; BinaryTreeNode *pLeft; BinaryTreeNode *pRight;};思路:由于是二叉搜索树,因此其中序遍历算法可以按照从小到大的顺序遍原创 2015-10-02 23:58:40 · 459 阅读 · 0 评论 -
剑指offer - 从上往下遍历二叉树
二叉树结点定义如下:struct BinaryTreeNode{ int value; BinaryTreeNode *pLeft; BinaryTreeNode *pRight;};分析:按层打印的顺序决定了我们应该先打印根节点,之后为了打印根节点的左右结点,我们需要把这两个子结点保存到一个queue的容器中。之后读取左结点,把它打印出来后,若它包含孩子结点,则还是按照顺原创 2015-10-01 21:05:06 · 750 阅读 · 0 评论 -
剑指offer - 包含min函数的栈
定义栈的数据结构,并在该类型中实现一个能够得到栈最小值的 min 函数,使得调用 min, pop, push 的时间复杂度均为1。思路:在入栈和出栈的过程中,借助一个辅助栈来记录每次操作后的当前栈的最小值。比如当前栈压入了一个更小的值,可以将该最小值压入辅助栈中,这样辅助栈的栈顶就是当前栈的最小值了。而如果当前栈弹出一个元素,那么可以将辅助栈的栈顶弹出。注意到通过这种方式,辅助栈跟当原创 2015-10-01 20:23:20 · 444 阅读 · 0 评论 -
剑指offer - 二叉树的镜像问题
输入一棵二叉树,输出它的镜像。二叉树定义如下所示:struct BinaryTreeNode { int value; BinaryTreeNode *pLeft; BinaryTreeNode *pRight;};求一棵二叉树的镜像时,注意到根节点是相同的,然后它们的左右结点交换了位置,所以可以采用前序遍历的方法遍历这棵树的每个结点。如果遍历到的结点有左右结点,则原创 2015-10-01 16:42:19 · 420 阅读 · 0 评论 -
java 中访问控制 public、private 和 protected 介绍
Java的访问控制机制说明:1.任何声明为public的内容可以被从任何地方访问。2.被声明成private的成员不能被该类外看到。3.如果一个成员不含有一个明确的访问说明,则它只对同包可见, 不同包不可见。这是默认访问。4.protected是同包都可见,且子类都可见。以下例子说明:1)子类可以访问protected 2)同一包中非子类(Test)可以访问原创 2015-10-30 20:33:17 · 877 阅读 · 0 评论