题目描述: 给定一组数字 nums ,其中恰好有两个元素只出现一次,其他所有元素只出现两次。找到只出现一次的两个元素。 例如: 给定nums = [1, 2, 1, 3, 2, 5],回报[3, 5]。 注意: 结果的顺序并不重要。所以在上面的例子中,[5, 3]也是正确的。 你的算法应该运行在线性运行时的复杂度。你能用空间复杂度来实现吗? “我的题目”理解 : 我以为是找到数组中出现一次的数字组合在一起返回就行,且认为数组中的数字都 > = 0 (那也就意味着有的数字可能出现不止两次且出现一次的数字不一定只有两个) 。这样的话,我的解决方案是用 nums 去索引vec #include<iostream> #include<vector> using namespace std; class Solution { public: vector<int> singleNumber(vector<int>&am 继续阅读 >>


刘生玺 17/12/13 22:33:12
1.传值与传引用 形参与实参: (1)形参一定会被初始化 (2)形参名可选,如果没有形参名那么我们就不能使用该形参,所以一般都会有形参名。出现未命名的形参,一般就是说我们在该函数中用不到它,但还是必须给他提供实参。 传值与传引用 传值: (1)发生值的拷贝 (2)形参与实参是两个不同的东西 (3)对形参的操作不会影响实参 传引用 (1)传引用是它对应实参的一个别名 (2)对它操作就是在对实参操作 该注意的几点: (1)使用传引用来避免拷贝。如果实参很大或者根本就不支持拷贝,只能用传引用。 (2)函数不需要改变引用参数的值就用const来修饰。尽可能使用const 2.管理指针形参 (1)使用标记指定数组长度。如:c语言用’\0’来表示一个字符数组的结束 void print(const char *str) { if(str) //指针非空 { while(*str) 继续阅读 >>


刘生玺 17/12/09 15:24:05
题目描述: Given a sequence of n integers a1, a2, …, an, a 132 pattern is a subsequence ai, aj, ak such that i < j < k and ai < ak < aj. Design an algorithm that takes a list of n numbers as input and checks whether there is a 132 pattern in the list. Note: n will be less than 15,000. Example 1: Input: [1, 2, 3, 4] Output: False Explanation: There is no 132 pattern in the sequence. Example 2: Input: [3, 1, 4, 2] Output: True Explanation: 继续阅读 >>


刘生玺 17/12/08 12:12:52
0 . 在这之前你需要准备的事: 1.知道什么是Linux,了解一些Linux的来龙去脉,知道 Linux 会在哪里使用,有什么样的特点 2. 有一台装有Linux系统的电脑且经过了一些基础配置 3.会使用一些基础命令。比如:ls , cat, cp, cd 等等 4.会使用配置过的vim书写代码,会用gcc和gdb调试代码 5. 正在使用git与github,书写csdn博客(当然也可以是其他类型的) 如果上面的这些你都没有完成,那么先去做它们,你觉得怎么样?嘻嘻 1.什么是 shell 呐? 简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具,从某方面来说shell也是系统的一部分。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指 继续阅读 >>


刘生玺 17/12/01 18:45:42
什么是模式匹配? 给定一个子串,要求在某个字符串中找出与该子串相同的所有子串,这就是模式匹配。也就是我们平常在记事本中的“查找选项”所运用的算法,其实说白了就是让我们编程实现:在一个大的字符串中找到一个小的字符串并返回其第一个匹配字符的下标 BF算法 时间复杂度为O(m×n),m和n分别是模式串与主串的长度。 思路:将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果 代码实现: #include<stdio.h> #include<string.h> #include<iostream> #define MAX 255 using namespace std ; typedef struct { int count ; char str[MAX]; }PP ; int BF(PP S , 继续阅读 >>


刘生玺 17/11/26 15:07:00
0.拷贝构造函数 其实就是类与类之间的赋值操作所要调用的函数(因为类对象与普通对象不同,类对象内部结构较为复杂,存在各种成员变量) 代码举例: #include<iostream> using namespace std; class Myclass { private: int a; public: //构造函数 Myclass(int b) { a = b;} //拷贝构造函数 Myclass(const Myclass& C) { a = C.a; } //一般函数 void Show () { cout<<a<<endl; } }; int main() { Myclass A(100); Myclass B = 继续阅读 >>


刘生玺 17/11/24 21:47:02
1 .三种非递归遍历(栈) 所要遍历的树是: 先序 + 中序 思路:就拿先序遍历为例来说吧。 1.访问根节点,根节点入栈,进入左子树。 2.访问左子树的根节点,根节点入栈,进入下一层左子树。 3.重复直到当前节点为空。即到达了最**左下方**的节点 4.如果栈不为空,就从栈顶取出节点,进入其右子树 5.直到当前节点和栈都为空时,结束。(栈为空就是所有的入栈的节点的右子树都访问过了。当前节点为空就代表所有的节点都访问过了) 实现代码: #include<iostream> using namespace std; typedef struct Node { char data ; struct Node * Lchild ; struct Node * Rchild ; }BiNode ,*BiTree ; typedef struct temp{ BiTree ptr; 继续阅读 >>


刘生玺 17/11/23 23:06:17
一.基本知识 1. 数学知识 (1)在二叉树的第i层上最多有2^(i-1)个节点 (2)深度为k的二叉树最多有2^(k)-1 个节点 (3)对任意二叉树,若叶子节点数为n0,度(节点拥有子树的个数)为2的节点数为n2,则 n0==n2+1 (4)对于具有n个节点的完全二叉树,如果按照对满二叉树节点连续编号的方式,对所有节点从1开始顺序编号,则对于任意序号为i的节点有: 如果 i==1 ,则没有双亲节点。i>1 ,则双亲节点(是同一个节点)的序号为“i/2” 如果 2i <= n,则节点i的左孩子节点序号为 2i ,否则就没有左孩子 如果 2i + 1 <= n,则节点i的右孩子节点序号为 2i+1 ,否则就没有右孩子 以上知识可以自己画图进行验证,也可以自己进行数学论证(反正我是不会的了~_~) 二. 二叉树的创建(二叉链表) 节点定义: typedef struct Node { char data 继续阅读 >>


刘生玺 17/11/14 22:51:46
1.容器 容器用来存储数据的,数据可以是用户自定义类型(对象),也可以是预定义类型。一般用的就有(vector,list,deque)那么有什么好处呐?参考这篇博客:博客 2.函数重载 什么是函数重载?(what)在同一作用域内,函数名相同但参数不同的一组函数。这组函数被称为重载函数。为什么需要它?(why)重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。 代码示例在对象指针那块 参考学习:函数重载 3.对象指针 顾名思义,就是指向对象的指针,尽量初始化 代码示例: #include<iostream> using namespace std; class Myclass{ private: int m; int n; public: //公有访私有 Myclass() //函数重载 {与下面的Myclass(int 继续阅读 >>


刘生玺 17/11/10 21:50:09
问题索引: 1.为什么要存在这种东西? 2.它有什么样的作用? 3.与define 有什么联系? 4.C与C++中的const有什么区别? 5. C++ 11 中又有了些什么新的东西? 解: 1.为什么要存在这种东西?就是为了避免程序员在编程时,手残修改关键部分的值(其实想一想内核为什么会分内核态和用户态,类中为什么要有public和private也就明白了) 2.它有什么样的作用?其实说的简单点就是保护被修饰的东西,防止意外的修改 3.与define 有什么联系?他们的底层实现是如何的?其实这是一个最不好回答的问题。我就简单的从内存方面来叙述一下 联系: define – 不分配内存,给出的是立即数,只是简单的替换。有多少次使用就进行多少次拷贝替换,在内存中会有多个拷贝,消耗内存大 const – 在静态存储区中分配空间,在程序运行过程中内存中只有一个拷贝 更多的戳这里和那里:这里 那里 4.C与C++中的const有什么区别 继续阅读 >>


刘生玺 17/11/02 23:04:52