数据结构
Tinus Chen
这个作者很懒,什么都没留下…
展开
-
一个整型数组里除了一个数之外,其他的数字都出现了两次
一个整型数组里除了一个数之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 例如 a[] = {10,2,3,4,5,6,7,6,7,5,4,3,2,33,22,44,33,22,10};,在数学中我们知道异或运算,相同的两个数异或为0,这个题中说的所有的都是数字出现了两次,那么他们异或肯定为0,最后所有数进行异或运算后留下的数就是...原创 2019-02-27 22:06:41 · 640 阅读 · 0 评论 -
数据结构笔记:一个整型数组里除了两个数字之外,其他的数字都出现了两次
本题和前面一个题型《一个整形数组里除了一个数字其他的所有值都是成对的》一样。在这里还是需要通过异或的方式解决。 因为异或是相同为0,不同为1,异或是基于位运算的。所以在这个题中,相同的所有的数异或后依然为0, 最后异或的结果就是两个不同的数异或的结果,因为他们不同,所以按位异或后32bit里面肯定或有一位是1,而我们就找这其中一位异或结果是1的那个位为基准。将数组分成两个数组,那么分下来后两个...原创 2019-02-27 23:09:20 · 1942 阅读 · 0 评论 -
快速排序(三种算法实现和非递归实现)
快速排序(Quick Sort)是对冒泡排序的一种改进,基本思想是选取一个记录作为枢轴,经过一趟排序,将整段序列分为两个部分,其中一部分的值都小于枢轴,另一部分都大于枢轴。然后继续对这两部分继续进行排序,从而使整个序列达到有序。 递归实现: void QuickSort(int* array,int left,int right) { assert(array); if...转载 2019-02-25 13:31:54 · 2393 阅读 · 0 评论 -
数据结构笔记:二叉树单度节点删除
编写一个函数用于删除二叉树中度为1的所有节点。 要求:节点删除后,其唯一的子节点替代它的位置。 如下: 代码如下,如有问题请指出,谢谢指导: typedef struct _tag_BTreeNode BTreeNode; struct _tag_BTreeNode { int data; BTreeNode* left; BTreeNode* right; }; vo...原创 2019-03-02 20:59:01 · 470 阅读 · 1 评论 -
给定头结点和指定结点,删除指定结点在时间复杂度为O(1)
给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下: struct ListNode { int m_data; ListNode* m_pNext; }; 函数的声明如下: void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted); 一般单链表删除某个节点,需要知道删...原创 2019-03-02 22:05:22 · 670 阅读 · 0 评论