![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
一些常用算法
小强同学:
这个作者很懒,什么都没留下…
展开
-
去掉空格O(N)解法
在一个数组内去掉空格有很多种解法,最差那种就是遇到一个空格把后面所有元素的往前移一次,这样下来复杂度是O(o^2),这肯定不可取,当然最好的就是遍历一遍就把空格弄掉,这是可以做到的,这样复杂度就变成o(n)了,当然既然这种算法能弄掉空格也可适用于其他值。 算法:原理其实就是插空,我们用一个变量记录空格数,我们每遇到一个空格就把这个数加一,说明前边多了一个空需要非空格去补充,当遇到非空格的时候,那直...原创 2019-08-28 18:10:20 · 182 阅读 · 0 评论 -
俩个相同大小升序序列合并在一起的中位数解法
这道题貌似还是一道考研题,但是很久了 好像是2011年的。大概意思就是一个如果一个序列S1(11,13,15,17,19)则中位数是15, S2=(2,4,6,8,20) ,如果把S1和S2按照升序合在一起则11是中位数。 让你写算法: 当然最常见的无非就是把他俩放在一个数组里然后直接就找到中间那个了,但是这样的算法复杂度就会变成O(N),有没有更好的办法呢,当然首先就要利用中位数的性质。 假设...原创 2019-08-28 21:27:19 · 314 阅读 · 0 评论 -
C语言 递归删除不带头节点单链表L所有值为x的结点
题目:C语言 递归删除不带头节点单链表L所有值为x的结点 王道书里源码 void del_x_3(linklist &l,elemtype x) { lnode *p; if(L==NULL) return; if(L->data==x) { p=L; L=L->next; free(p); del_x_3(L,X); } else del_x_3(L->next,x);...原创 2019-09-01 22:05:46 · 441 阅读 · 0 评论 -
非递归不带头结点删除
前面想了想王道那个递归不带头的删除的c语言版,后来想了想在那个算法中递归无非就是代替了循环。那直接写循环就可以代替了。还是采用二级指针 typedef struct lnode { int x; struct lnode *next; }lnode; void dell(lnode **L,int x) { lnode *p; while((*L)!=NULL) { if((*L)...原创 2019-09-02 17:29:00 · 123 阅读 · 0 评论