2014年7月17日
摘要: 这个题目要求在时间复杂度O(nLogn)、空间复杂度O(1)内,对单链表进行排序。常见的满足这两项要求的排序算法就是归并排序和快排。我先尝试了快排,由于在单链表中实现随机选择哨兵项A[r]不够方便,我令每组最后一个数据项为A[r](参考算法导论实现),这样做对于一般的数据应该没有问题,但对于特殊设计... 阅读全文
posted @ 2014-07-17 16:07 xlert 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 今天上午在K一道单链表排序题(目前LeetCode第四题),利用快速排序实现的版本过不了时间限制,不排除我实现中优化做得不够。Partition的算法和我在这篇blogC++实现的快速排序中使用的算法是类似的,都是参考自算法导论。虽然提交LeetCode的题目超时了,但是这个代码可以留作参考。至于题... 阅读全文
posted @ 2014-07-17 14:24 xlert 阅读(516) 评论(0) 推荐(0) 编辑
  2014年7月16日
摘要: 做了LeetCode前三题,感觉每道题目都挺麻烦啊。之前跟备哥聊天还以为题目都很水呢,看来被忽悠了?第一题:Reverse Words in a String 意思是把输入的字符串中的多个单词顺序颠倒(不是单词本身逆序)。并且去掉前位置空格和尾部空格,单词之间仅保留一个空格。我是利用c++的s... 阅读全文
posted @ 2014-07-16 16:35 xlert 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 在点评公司安排的酒店里打下这行字,感慨还是不少的。主办方点评公司无论是吃住还是比赛安排上,看出来都非常用心:酒店的住宿日程安排很全面,零食足够,就算盒饭也是质量上乘。大家一致觉得要给好评。据说这次有2000+的人报名参赛,选拔到现场的60人机会还是挺宝贵的,我是线上测试来的,C++组第一名(共5... 阅读全文
posted @ 2014-07-16 09:59 xlert 阅读(152) 评论(0) 推荐(0) 编辑
  2014年5月24日
摘要: BFS。 这题是个坑。很久没刷题了,偏偏又遇上这个坑题。下面是坑点: 数据范围是400 400,而不是题目所写的300 300,否则会WA。坑不?我WA了3次才发现。 由于输入巨大,一定要用scanf,而不能用cin,否则会超时。这个是我忘了,不能算题目坑。#include#include... 阅读全文
posted @ 2014-05-24 23:49 xlert 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 贴一道利用优先队列实现的Dijkstra算法。这道题是要求次短路,所以对Dijkstra算法略作修改,同时保存最短和次短路数组。#include#include#include#include#include//#includeusing namespace std; struct Edge{ ... 阅读全文
posted @ 2014-05-24 23:41 xlert 阅读(91) 评论(0) 推荐(0) 编辑
摘要: #include#include#includeusing namespace std;#define MAX_N 20002#define MAX_E 50001struct edge{ int u, v, cost;};int par[MAX_N];int Rank[MAX_N];edge es... 阅读全文
posted @ 2014-05-24 23:37 xlert 阅读(136) 评论(0) 推荐(0) 编辑
  2014年5月14日
摘要: 快速排序,Quick Sort。采用了经典的分治思想:每次确定一个元素的位置,并将序列分为两个子序列:小于等于该元素、大于等于该元素。问题转为分别对刚得到的两个序列进行处理,直到序列长度为1.Partition函数是比较重要的,这里采用了和算法导论类似的想法:每次随机从中抽取一个元素A,将其与序列尾... 阅读全文
posted @ 2014-05-14 23:58 xlert 阅读(187) 评论(0) 推荐(0) 编辑
  2014年5月13日
摘要: #include#include#includeusing namespace std;void ShellSort(int *a, int n){ int d; d = n / 2; while (d >= 1) { for (int i = 0; i k; p -= d) { ... 阅读全文
posted @ 2014-05-13 23:19 xlert 阅读(233) 评论(0) 推荐(0) 编辑