美文网首页
常见算法问题解析

常见算法问题解析

作者: TAsama | 来源:发表于2019-03-23 20:26 被阅读0次

1. 字符串反转

将一个字符串进行反转输出。
可以使用双指针,一个指向字符串头部,一个指向字符串结尾,将头尾指针交换并令头指针右移,尾指针左移。循环的条件为头指针小于尾指针。

2. 链表反转

将一个链表反转。
取链表头部,获取下一个指针next,将链表头部的next置为Null,随后取next的next对象,修改next的next为上一个链表节点。

3. 有序数组合并

归并算法的归并

4. Hash算法

获取字符串中第一次出现的且只出现了一次的字符。
这里运用到hash表的建立方式,字符串占用长度为8位,可以表示256种字符,我们将字符串出现次数传入数组对应ASCII码的位置中,如a传入数组地97位记录下其出现次数。
遍历字符串,字符每出现一次就在数组对应位置++。
再遍历字符串,查找对应哈希表,当数组中所存储的值为1时,返回该字符串。

5. 查找两个子视图的共同父视图

将两个视图的所有父视图分别存入两个数组,直到父视图为空。
反向遍历两个数组,判断元素是否相同。

6. 求无序数组当中的中位数

通过快速排序,取首尾指针,首指针向右,尾指针向左,遍历,直至首指针找到大于最开始的数,尾指针找到小于最开始的数,交换元素。当首指针大于等于尾指针时,结束循环,交换首位指针的元素。这时候我们可以得出首指针左边的都小于他右边的元素,如果这时候首指针正好在中间,则说明次元素为中位数,否则,若大于中间,则说明中位数在左边,取左侧数组再排序,若小于中间则说明中位数在右边,则再排序。

相关文章

网友评论

      本文标题:常见算法问题解析

      本文链接:https://www.haomeiwen.com/subject/bzqevqtx.html