数据结构和算法
cmf478102925
这个作者很懒,什么都没留下…
展开
-
排序之基于单链表插入排序
插入排序的具体方法在上文已经介绍过,此文不再赘述。对于数组,可以使用索引来轻易操作上下元素,但是单链表则只能通过指向下一节点的元素来操作。因此,需要两个指针firstOutOfOrderPointer(指向第一个无序元素的节点)和lastInOrderPointer(指向最后一个有序元素的节点)。首先,比较firstOutOfOrderPointer->data和第一个节点的data。原创 2016-05-22 22:47:18 · 543 阅读 · 0 评论 -
排序之基于数组插入排序
有n个元素,其中前m个已经有序,后n-m个是无序状态,使用选择排序毫无意义,于是使用一种新的方法插入排序。设有一个数组List如下:List={10,18,25,30,23,17,45,35};List[4]应该插入List[1]和List[2]之间,先把List[4]->temp,List[2]和List[3]后移,再temp->List[2]。我们在排序过程中,把整个数组分原创 2016-05-21 23:24:36 · 235 阅读 · 0 评论 -
排序之选择排序
对n个元素排序,第一次找出n个中最小值排在第一个,第二次找出(n-1)个中最小值排在第二个,如此循环。第一次比较n-1次,第二次比较n-2次。。。所以是O(n^2)void selectionSort(){ int minIndex,nowIndex; for(minIndex=0;minIndex<numberOfItems;minIndex++) {原创 2016-05-21 23:02:44 · 190 阅读 · 0 评论 -
Leetcode战记 day2 求二叉树的深度
问题:给定一个二叉树求出其深度思路:使用第一个栈存储二叉树的点,然后使用另一个栈来存储深度原创 2015-12-06 13:53:24 · 256 阅读 · 0 评论 -
Leetcode战记 day1 单数字问题
问题:一个数组中全为正整数,有一个数字只出现了一次,其它均出现了两次,找出这个数字思路:使用异或运算符 1. a ⊕ a = 0 2. a ⊕ 0 = a 3. a ⊕ b = b ⊕ a原创 2015-12-04 19:09:42 · 173 阅读 · 0 评论 -
Leetcode战记day1 数根问题
问题:给一个非负整数,如num=68,6+8=14,1+4=5;即求出该整数各位数字相加之和,若该和大于9继续加,直到其为一个个位数num=a[n]a[n-1]...a[2]a[1]a[0],num=10^n*a[n]+10^(n-1)*a[n-1]+……+10^1*a[1]+10^0*a[0]1%9=1;10%9=1;100%9=1……由此规律可知num%9=a[n]+a[n-1原创 2015-12-04 11:07:34 · 219 阅读 · 0 评论 -
Leetcode战记day1 尼姆游戏
问题:一共n个棋子,两个人取棋子,每次取1到3个,谁取到最后一个谁赢当n=1、2、3,第一个人获胜n=4,第一个人必输,第二个人获胜n=5、6、7,第一个人可以拿走1、2、3个棋子使n=4,第二个人必输n=8,不管第一个人怎么拿,第二个人均可以移动相应棋子是第一个人面对n=4的必输局n=9、10、11,第一人可以让第二人面对n=8的必输局所以当n=4K时,第一人输,其他时候第一人赢原创 2015-12-04 10:39:13 · 547 阅读 · 0 评论 -
Leetcode战记 day3 移零问题
问题:给定一个数组,把其中所有的零元素移动数组的末尾,其它非零元素的位置关系不变想法:对于这个问题,是一个数组操作,对于数组操作,c++中提供了fill和remove函数可以使用,很方便的解决这个问题 fill(start,end,value):表示从start到end位置的元素全部置为元素value,无返回值 remove(start,原创 2015-12-31 11:40:19 · 218 阅读 · 0 评论 -
Leetcode战记 day3 删除链表中的点
问题:一个链表,删除其制定的点public: void deleteNode(ListNode* node) { auto next=node->next; *node=*next; delete next; }原创 2015-12-31 11:39:06 · 175 阅读 · 0 评论 -
贪心法实现无向图的划分 代码
#include #include #include #include #include #include /*2013303405 14011306 陈铭丰使用贪心算法求解无向图顶点划分问题*/using namespace std;/*图的顶点定义*/typedef struct Node //定义节点结构体{ int index;//节点的编号 int原创 2015-11-20 17:37:29 · 379 阅读 · 0 评论 -
递归生成二叉树 day2
为了方便 决定把节点类 二叉树类写在一个cpp文件里面节点类struct Node{Node* pLeft;Node* pRight;char data;}二叉树的重构方法Node* Rebuild(string preOrder,string midOrder){ if(preOrder.size()==0) return NULL; if(midOrde原创 2015-11-20 17:08:19 · 197 阅读 · 0 评论 -
贪心法实现无向图的划分
给定一个无向图,使用贪心算法划分其节点,希望集合数目越来越少。矛盾:贪心算法总是局部最优,对于整个问题的求解不一定是最优的。想法:使用韦尔奇鲍威尔算法来求解该问题。鲍威尔算法:把图的节点按度的降序排列,第一种颜色对第一点着色,按照着色顺序把非临阶点着色;然后是第二种。。。。。。直到全部上色。对于节点集合按照度的降序排列,使用sort方法。 sort(begin,end)表示比较从begin到end原创 2015-11-20 17:34:36 · 1279 阅读 · 0 评论