
数据结构与算法
mr_ok1
这个作者很懒,什么都没留下…
展开
-
选择排序
选择排序O(n^2) linux-CLion 过程较为简单,直接上代码 //下面是选择排序的过程 template<typename T> void selectSort(T arr[],int n){ for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++) if(arr[j]&原创 2019-03-05 14:07:55 · 2231 阅读 · 0 评论 -
从尾到头打印链表
题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 使用栈 /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ ...原创 2019-03-07 20:41:40 · 138 阅读 · 0 评论 -
删除链表中重复的节点
删除链表中重复的节点 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 ListNode* deleteDuplication(ListNode* pHead) {原创 2019-03-07 20:23:47 · 482 阅读 · 0 评论 -
两个链表的第一个公共节点(链表相交)
#题目描述 输入两个链表,找出它们的第一个公共结点 链表只要存在公共节点,那么公共节点后面所有的节点都是公共的。因此,对于这种一般两种思路 思路一:将两个链表分别压入两个栈中,然后从栈顶不断比较。知道遇到第一个不相等的节点,然后公共节点就是该节点的下一个节点 思路二:如果能将链表尾部对齐,那么就可以两两比较了,在较长的链表上先前进多少步, /* struct ListNode { int val;...原创 2019-03-10 10:51:34 · 698 阅读 · 0 评论 -
合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路可以参考归并排序合并两个有序的数组,但是代码可能有点笨,后面会列出其他解法 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ ...原创 2019-03-09 20:50:17 · 187 阅读 · 0 评论 -
反转链表
题目描述 输入一个链表,反转链表后,输出新链表的表头。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode* pHead...原创 2019-03-09 19:00:51 · 207 阅读 · 0 评论 -
快速排序
以下转载自 k_koris的博客 注:内容,图片来自于慕课网liuyubobobo老师的课程。 快速排序 快速排序可以说是20世纪最伟大的算法之一了。相信都有所耳闻,它的速度也正如它的名字那样,是一个非常快的算法了。当然它也后期经过了不断的改进和优化,才被公认为是一个值得信任的非常优秀的算法。 c++中alg...转载 2019-03-09 12:06:38 · 246 阅读 · 0 评论 -
归并排序
归并排序就是讲两个有序的数组合成一个有序的数组 转载自https://blog.youkuaiyun.com/k_koris/article/details/80508543 注:内容,图片来自于慕课网liuyubobobo老师的课程。 算法复杂度:O(nlogn); 也许有很多同学说,原来也学过很多O(n^2)或者O(...转载 2019-03-09 09:25:22 · 211 阅读 · 0 评论 -
冒泡排序
冒泡排序 在一次冒泡过程中相邻的元素比较,如果左边的元素大于右边的元素,则交换。在一次冒泡之后最大的元素肯定在右边。原创 2019-03-05 16:10:20 · 169 阅读 · 0 评论 -
插入排序
插入排序 与插入排序最大的不同就是第二重循环是可以提前结束的,for(int j=i; j>0 && arr[j]<arr[j-1]; j–) template <typename T&原创 2019-03-05 14:52:12 · 180 阅读 · 0 评论 -
链表中的倒数第k个节点
输入一个链表,输出该链表中倒数第k个结点。 题目返回值为指针,首先如何获取到倒数第k的节点的指针呢 方法一:假设整个链表由n个节点,那么倒数第k个节点就是正数第n-k+1个节点,这就容易了。但是要获取到链表的节点的个数就得先遍历一遍链表,然后再遍历一遍获取第n-k+1个节点。一共得遍历两遍链表。 方法二:如何只遍历一遍链表呢? 定义两个指针p和b,第一个指针p指向正数第k个节点,第二个指针b指向头...原创 2019-03-07 23:01:52 · 183 阅读 · 0 评论