随笔分类 -  C++

摘要:求解大于某数的下一个素数问题,常见于求某一范围内的所有素数,第k个素数问题中,由于素数一定是奇数,而两个相邻奇数之间一定相差2,所以只要在奇数中查找即可:代码如下 阅读全文
posted @ 2017-09-08 10:35 sold_out 阅读(702) 评论(0) 推荐(0)
摘要:```C++ //打印从1到最大的n位数:大数问题,用字符串表示数字来避免溢出 bool increment(char number){ bool isOverFlow = false; int nTakeOver = 0; size_t strLength = strlen(number); fo 阅读全文
posted @ 2017-08-27 23:23 sold_out 阅读(335) 评论(0) 推荐(0)
摘要:```C++ //在O(1)时间内删除链表节点,给定单向链表的一个头指针和一个节点指针,假设该节点一定是链表中的节点 struct ListNode{ int m_nValue; ListNode* m_pNext; }; void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted){ //传入特殊值:空链表,空... 阅读全文
posted @ 2017-08-27 23:22 sold_out 阅读(626) 评论(0) 推荐(0)
摘要:```C++ //调整数组顺序使奇数位于偶数前面: void reorderOddEven(int pData, unsigned int length){ if (pData == nullptr || length pBegin && func( pEnd)) pEnd ; if (pBegin 阅读全文
posted @ 2017-08-27 23:20 sold_out 阅读(223) 评论(0) 推荐(0)
摘要:```C++ //树的子结构:输入两颗二叉树A, B,判断B是不是A的子结构 struct BinaryTreeNode{ double m_dbValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight; }; bool hasSubTree(BinaryTreeNode* pRoot1, BinaryTreeNode... 阅读全文
posted @ 2017-08-27 23:18 sold_out 阅读(193) 评论(0) 推荐(0)
摘要:```C++ //字符串的全排列:递归实现 void Permutation(char* pStr){ if (pStr == nullptr) return; Permutation(pStr, pStr); } void Permutation(char* pStr, char* pBegin){ if (*pBegin == '\0') ... 阅读全文
posted @ 2017-08-27 23:14 sold_out 阅读(129) 评论(0) 推荐(0)
摘要:```C++ //快速排序:Partition分割函数,三数中值分割 bool g_bInvalidInput = false; int median3(int data, int start, int end){ int middle = (start + end) 1; if (data[sta 阅读全文
posted @ 2017-08-27 23:13 sold_out 阅读(1107) 评论(0) 推荐(0)
摘要:C++ //把字符串转换成整数: // 1:考虑特殊输入,空指针,空字符串,只有正负号之后没有数字,字符串中有非数字字符 // 2:考虑整型的(正数)上溢出,(负数)下溢出, 需要把num类型设置为long long才能不溢出,再用num与int的极大极小值比较 // 3:输入测试:正数,负数,0 阅读全文
posted @ 2017-08-27 23:10 sold_out 阅读(282) 评论(0) 推荐(0)
摘要:C++ //丑数:求从小到达排列的第1500个丑数 //暴力枚举 bool isUgly(int number){ while (number % 2 == 0) number /= 2; while (number % 3 == 0) number /= 3; while (number % 5 阅读全文
posted @ 2017-08-27 23:08 sold_out 阅读(244) 评论(0) 推荐(0)
摘要:```C++ //mergeSort: void mergeSort(int data, int length, int start, int end, int tempArray){ if (start == end){ tempArray[start] = data[start]; return 阅读全文
posted @ 2017-08-27 23:06 sold_out 阅读(316) 评论(0) 推荐(0)
摘要:```C++ //两个链表的第一个公共节点:可以利用两个辅助栈实现, 也 //可以遍历链表两次,求节点个数差,长的链表先遍历, 然后同时开始遍历, 找到相同节点 struct ListNode{ int m_nValue; ListNode* m_pNext; }; ListNode* FirstPublicNode(ListNode* pHead1, ListNode* pHea... 阅读全文
posted @ 2017-08-27 23:03 sold_out 阅读(465) 评论(0) 推荐(0)
摘要:```C++ //二叉查找树的第k大节点:利用二叉搜索树的中序遍历序列是递增排序的性质,递归实现 struct BinaryTreeNode{ int m_nValue; BinaryTreeNode m_pLeft; BinaryTreeNode m_pRight; }; BinaryTreeNo 阅读全文
posted @ 2017-08-27 23:00 sold_out 阅读(656) 评论(0) 推荐(0)
摘要:```C++ // 数组中数字出现的次数:数组中只出现一次的两个数字,其他数字都出现两次(位运算特点:位异或exclusiveOR(^), 位与(&)) // 其他解法:使用排序,然后二分查找只出现一次的数字,时间O(n log n), // 使用哈希表存储每个数字出现的次数,时间O(n),空间O( 阅读全文
posted @ 2017-08-27 22:57 sold_out 阅读(227) 评论(0) 推荐(0)
摘要://添加赋值运算符函数: 阅读全文
posted @ 2017-08-27 22:51 sold_out 阅读(203) 评论(0) 推荐(0)
摘要:1、reinterpret_cast (expression) type-id 必须是一个指针、引用、算术类型、函数指针或者成员指针。 它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,再把该整数转换成原类型的指针,还可以得到原先的指针值)。 static_ 阅读全文
posted @ 2017-08-24 14:42 sold_out 阅读(437) 评论(0) 推荐(0)
摘要:对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法。 时间复杂度来说: (1)平方阶(O(n2))排序 各类简单排序:直接插入、直接选择和冒泡排序;快速排序 (2)线性对数阶(O(nlogn))排序 堆排序和归并排序;(避免最坏情形的快排:平均O(nlogn)) (3)O(n 阅读全文
posted @ 2017-08-24 14:37 sold_out 阅读(592) 评论(0) 推荐(0)
摘要:当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用。也就是说,当类的对象需要拷贝时,拷贝构造函数将会被调用。以下情况都会调用拷贝构造函数: (1)一个对象以值传递的方式传入函数体 (2)一个对象以值传递的方式从函数返回 (3)一个对象需要通过另外一个对 阅读全文
posted @ 2017-08-24 14:11 sold_out 阅读(360) 评论(0) 推荐(0)
摘要:三大特性是:封装,继承,多态 所谓封装 就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装是面向对象的特征之一,是对象和类概念的主要特性. 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些 阅读全文
posted @ 2017-08-24 14:06 sold_out 阅读(1365) 评论(0) 推荐(0)
摘要:当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。 静态数据成员的用途之一是统计 阅读全文
posted @ 2017-08-24 13:42 sold_out 阅读(966) 评论(0) 推荐(0)
摘要:一、基本概念 对于C++中经常出现的函数名称相同但是参数列表或者返回值不同的函数,主要存在三种情况: 1.函数重写(override) 函数重载主要实现了父类与子类之间的多态性,子类中定义与父类中名称和参数以及返回值都相同的虚函数。 1)重写的函数不能是static函数,必须是virtual函数,即 阅读全文
posted @ 2017-08-24 13:36 sold_out 阅读(2255) 评论(0) 推荐(0)