c++
adyw2565876
这个作者很懒,什么都没留下…
展开
-
malloc/free 与 new/delete的区别与联系
本文是转载自http://blog.sina.com.cn/s/blog_4d3a41f4010116ha.htmlmalloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。下面来看他们的区别。一、操作对象有所不同malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。对于转载 2015-07-26 15:35:09 · 243 阅读 · 0 评论 -
数组A包含0到n的所有整数,但其中缺了一个,且数组A里的整数都是用二进制形式存储,求这个缺失的整数
题目描述:数组A包含0到n的所有整数,但其中缺了一个。在这个问题中,只用一次操作无法取得数组A里某个整数的完整内容。此外,数组A的元素皆以二进制表示,唯一可用的访问操作是“从A[i]中取出第j位数据”,该操作的时间复杂度为常数。请编写代码找出那个缺失的整数。代码如下:#include #include using namespace std; int findM原创 2015-08-07 18:02:57 · 1001 阅读 · 0 评论 -
如何判断两个单链表(无环)是否交叉
利用两个链表交叉的性质,若两个链表交叉,那么从链表的交叉点到链表尾部,都是相同的节点。因此,链表的形状是Y型的。因为是单链表,我们无法从链表尾部开始向前遍历,找到第一个相同的节点。因此,我们可以先遍历单链表1,计算出其长度len1,再遍历单链表2,计算出长度len2,判断哪个链表是长链表,哪个链表是短链表,我们记长链表的头节点为cur1,长度为len1,短链表的头节点为cur2,长度为len2。长原创 2015-10-13 11:04:10 · 1179 阅读 · 0 评论 -
如何判断一个单链表是否有环
题目要求:给定一个单链表的头指针head,要求写一个函数判断这个单链表是否是一个有环单链表。单链表中的节点定义如下:struct listNode{int val;struct listNode *next;};方法1:首先定义一个map map,然后从单链表的头指针开始往后遍历,每次遇到一个指针p,就判断map[pCur]是否为0,若为0,则将map[pCur]赋原创 2015-10-12 22:50:21 · 971 阅读 · 0 评论 -
合并两个有序链表
方法1:递归求解首先设两个单链表的头节点分别为head1、head2。如果head1为空,则直接返回head2,若head2为空,则直接返回head1。若head1与head2都不为空,则比较head1-.val 与head2->val的大小,来决定head1和head2谁为合并后的单链表的头节点。分两种情况:1.若head1->val val,则头节点head = head1,接着递归去原创 2015-10-13 12:25:07 · 417 阅读 · 0 评论 -
数组的归并排序
归并排序:利用递归与分治的思想,先将数组对半划分,再对半划分的数组排序,从而使左右两个子数组各自有序,最后再将两排序号的子数组进行归并成一个大的有序数组。具体代码如下:#include #include using namespace std;void mergeSort(vector &arr, int start, int end);void merge(vector &ar原创 2015-10-13 15:10:57 · 1407 阅读 · 0 评论 -
堆排序
方法:1.首先将数组a[1,...,N]看成一个完全二叉树,利用完全二叉树的双亲节点与孩子节点间的关系来建立一个最大推,最大堆中任意的双亲节点的值都不小于孩子节点的值。下标为i的节点的左孩子的下标为(2i+1),右孩子的下标为(2i+2)。2.建立最大堆之后,将堆的最后一个元素(即数组中的最后一个元素)与堆顶元素(即数组的首个元素)进行交换,此时堆的最后一个元素(即数组的最后一个元素)即为最大原创 2015-10-13 20:40:53 · 287 阅读 · 0 评论