算法与数据结构
文章平均质量分 61
我真的是dj
这个作者很懒,什么都没留下…
展开
-
常见的排序算法
排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。 我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,我们将围绕这张图来思考几个问题。 上面的这张图来自一个PPT。它概括了数据结构中的所有常见转载 2017-07-05 16:22:24 · 334 阅读 · 0 评论 -
面试复习-------算法与数据结构------链表
如果一个操作可能会改变头指针,那么参数应该是ListNode** phead 头插法和尾插法是指在建立单链表的时候,时间复杂度都是O(n) 将节点添加到一个已存在链表的尾部也是O(n),那么为何尾插法可以O(n)而不是O(n^2),原因是在创建的时候会维护一个链表尾部的指针。所以不用每次都循环寻找链表尾节点。 (1)反转链表(剑指offer16) 为了防止断链需要设置三个指针分别指原创 2017-08-24 17:28:02 · 303 阅读 · 0 评论 -
面试复习-------算法与数据结构------字符串
(1)数组排成最小的数(剑指offer33/leetcode179) 解题思路:关于数字的大数问题最终都要转换成字符串解决。在该题中,将vector 转换成vector,然后调用sort函数,需要定义sort第三个规则如下: static bool cmp(const string str1, const string str2){ string s1 = str1原创 2017-08-20 20:58:43 · 287 阅读 · 0 评论 -
面试复习-------算法与数据结构------栈&队列
STL栈: 入栈:s.push(x); 出栈:s.pop()无返回值; 返回栈顶s.top() s.empty(),s.size().... STL队列: 入队:q.push(x)放到队列的末端; 出队:q.pop() 弹出队首无返回值 q.front()返回队首;q.back()返回队尾 q.empty(),q.size()..... (1)队列 栈 两个栈实现一个原创 2017-08-23 15:05:07 · 288 阅读 · 0 评论 -
面试复习-------算法与数据结构------排序
(1)快速排序 最坏O(n^2),平均O(n*logn); 特点:每趟都选择一个基准数,排完使左边全部比基准小,右边全部比基准大 核心的partition函数如下: int Partition(int* arr, int left, int right) { if(left >= right) return left; int tmp = arr[left]原创 2017-08-18 21:44:20 · 346 阅读 · 0 评论 -
面试复习-------算法与数据结构------实现库函数
库函数的实现 (1)字符串拷贝函数strcpy() /*********************************** 实现strcpy函数 输入:char* dest,char* src 输出:dest ***********************************/ char* strcpy(char* dest, char* src) { if(dest == NU原创 2017-08-18 19:44:15 · 247 阅读 · 0 评论 -
面试复习-------算法与数据结构------二叉树
创建二叉树 (1)二叉树的反序列化 给定“6423####51##7##”(先序)这种序列,构造二叉树 TreeNode* preOrderToTree(string input,int& index) { if(input.length() == 0)return NULL; if(input.at(index) == '#') { index++;原创 2017-08-30 20:46:32 · 354 阅读 · 0 评论