C++
文章平均质量分 67
Collin_NLP
sina weibo: collin-ICTNLP
展开
-
快速排序代码
快速排序相对较简单,但是如何把代码邪邪的原创 2014-07-19 10:30:00 · 555 阅读 · 0 评论 -
判断单链表是否存在环,存在的话找入口点
判断是否有环设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)原创 2014-07-13 21:02:50 · 677 阅读 · 0 评论 -
一个长度为A的无序数组,找到中位数
思路1:1.1 将前(n+1)/2个元素调整为一个最小堆;1.2 对后续每一个元素和堆顶比较,如果小于等于堆顶,丢弃之,去下一个元素。如果大于堆顶,用该元素取代堆顶,调整堆,去下一个元素重复1.2步1.3 当遍历完所有元素之后,堆顶为中位数思路2:利用快速排序的partition函数,任意挑一个元素,以该元素key,划分数组为两部分,如果左侧集合长度正好为(n+1)/2,那么k原创 2014-07-13 20:15:01 · 1938 阅读 · 1 评论 -
删除单链表倒数第K个节点
有P1, P2两个指针,P1从头开始跑,先跑K个节点,然后P2开始跑,当P1跑到头时,P2指向的就是倒数第K个节点了。这道题的思路比较简单,要想做得更好,可以加入一些鲁棒性的考虑,比如说空链表情况,链表长度小于k等。下面是代码:原创 2014-07-12 23:20:26 · 672 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。分析:如果不考虑时间复杂度,最简单的思路应该是从头扫描这个数组,每碰到一个偶数时,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾有一个空位,这时把该偶数放入这个空位。由于碰到一个偶数,需要移动O(n)个数字,因此总的时间复杂度是原创 2014-07-12 22:14:14 · 601 阅读 · 0 评论 -
重排数组元素,奇数放在奇数位,偶数放在偶数位
给定一个长度位2N的数组,原创 2014-07-13 14:23:30 · 2496 阅读 · 0 评论 -
c++ 避免头文件重复引用 (pragma once与 #ifndef的区别)
如何防止头文件被重复引用?有两种方法:1.方法一: 使用: # pragma once 2>方法二:使用: # ifndef #define #endif 例:#ifndef XXXXXXX (一个名字,尽量做到唯一) #define XXXXXXX (跟上边的名字一样) 文件最后写: #en转载 2014-07-12 18:43:32 · 4363 阅读 · 0 评论 -
判断一个二叉树是否是另一个的子树
输入两个二叉树A,B,设计一个程序检测B是否是A的子树。原创 2014-07-20 13:58:09 · 938 阅读 · 0 评论 -
打印1到n位所有数
输入n,要求打印从1开始到原创 2014-07-20 08:51:22 · 1955 阅读 · 0 评论 -
编辑距离算法
动态规划求编辑距离。允许的操作有:delete, insert, replace原创 2014-07-21 09:15:11 · 818 阅读 · 0 评论 -
求二叉树的镜像
#include using namespace std;struct BiTreeNode{ int val; BiTreeNode* leftChild; BiTreeNode* rightChild;};void MirrorBiTree(BiTreeNode* root){ if (root == NULL || (root->leftChild == NUL原创 2014-07-20 14:16:50 · 504 阅读 · 0 评论 -
反转单链表
输入一个单链表,程序需要反转链表。注意输入为NULL或者只有一个原创 2014-07-20 10:28:46 · 476 阅读 · 0 评论 -
打印二叉树中所有和为某一值的路径
采用前序遍历二叉树,访问过程中保存路径上的结点,到达叶节点时,判断是否满足条件。原创 2014-07-20 16:02:47 · 734 阅读 · 0 评论 -
输入一个数列,判断是否为某一个二叉搜索树的后序遍历序列
这里假设数列中没有 根据二叉搜索树的特点,做子树所有节点值小于根节点,原创 2014-07-20 15:34:54 · 985 阅读 · 0 评论 -
查找数组中出现次数超过一半的元素
基本思想:如果将数组原创 2014-07-20 17:42:36 · 859 阅读 · 0 评论 -
用两个栈实现队列
思路很简单:入队列时,原创 2014-07-18 23:55:41 · 528 阅读 · 0 评论 -
由前序和中序序列构建二叉树
根据前序遍历和中序遍历的特点,前序序列的第一个数是树的根结原创 2014-07-18 23:21:48 · 692 阅读 · 0 评论 -
c++成员函数的存储
用类去定义对象时,系统会为每一个对象分配存储空间。如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间。按理说,如果用同一个类定义了10个对象,那么就需要分别为10个对象的数据和函数代码分配存储单元,如图8.4所示。图8.4 能否只用一段空间来存放这个共同的函数代码段,在调用各对象的函数时,都去调用这个公用的函数代码。如图8.5所示。图8.5转载 2014-08-17 16:00:32 · 869 阅读 · 0 评论