美文网首页数据结构和算法分析
有关算法的面试题收集

有关算法的面试题收集

作者: AceKitty | 来源:发表于2017-01-08 12:52 被阅读83次

1. 对单链表排序,用代码实现【腾讯】

typedef struct Node {
    int data;
    struct Node *pNext;
} NODE, *PNODE;
//链表的长度
int length_list(PNODE pHead) {
    PNODE p = pHead->pNext;
    int len = 0;
    while (NULL != p) {
        ++len;
        p = p->pNext;
    }
    return len;
}
//对链表排序
void sort_list(PNODE pHead) {
    int i, j, t;
    int len = length_list(pHead);
    PNODE p, q;
    for (i = 0, p = pHead->pNext; i < len - 1; ++i, p = p->pNext) {
        for (j = i + 1, q = p->pNext; j < len; ++j, q = q->pNext) {
            if (p->data > q->data) {
                t = p->data;
                p->data = q->data;
                q->data = t;
            }
        }
    }
}

2. 快速找到未知长度的单链表的中间节点【腾讯】

  • 普通方法:
    遍历一遍单链表以确定单链表的长度L, 然后再次从头结点出发循环L/2次找到单链表的中间节点。
    算法复杂度:O(L + L/2)=O(3L/2)。
  • 利用快慢指针原理:
    设置两个指针search, mid都指向单链表的头结点。其中search的移动速度是mid的两倍。但*search指向末尾节点的时候,mid正好在中间了。
    代码实现(C语言)
typedef int ElemType;
typedef struct Node
{
    ElemType data; //数据域
    struct  Node *next; //指针域
} Node;
typedef struct Node *LinkList;
//快速找到未知长度单链表的中间节点 L:链表的头结点 *e返回的链表中间节点
bool GetMidNode(LinkList L, ElemType *e) {
    LinkList search, mid;
    mid = search = L;
    while (search->next != NULL) {
        if (search->next->next != NULL){
            search = search->next->next;
            mid = mid->next;
        } else {
            search = search->next;
        }
    }
    *e = mid->data;
    return true;
}

持续努力更新中......

相关文章

  • 有关算法的面试题收集

    1. 对单链表排序,用代码实现【腾讯】 2. 快速找到未知长度的单链表的中间节点【腾讯】 普通方法:遍历一遍单链表...

  • G1垃圾收集器实现原理

    1 与垃圾收集器有关的算法 在分析G1前先简单回顾一下与垃圾收集器相关的算法。通常所谓的垃圾收集器更多地是指跟踪垃...

  • JVM第二弹

    JVM第二弹 GC分代收集算法VS分区收集算法 分代收集算法 当前主流的VM垃圾收集都采用“分代收集“算法,这种算...

  • 第三章(二)GC

    本篇主要讲 垃圾收集算法 、 HotSpot的的算法实现 和 垃圾收集器。 垃圾收集算法 标记-清除算法 Mark...

  • LeetCode 仓库美化

    LeetCode 简介 LeetCode 是一个美国的在线编程网站,它收集了各大公司的经典算法面试题,用户可以选择...

  • 认知方法论笔记(二十七、二十八)

    第二十七天 算法与选择 认知的目的不是收集数据,而是优化算法,形成真正的认知。所谓“精英”,就是跟社会算法有关的人...

  • 开源项目 | 用Python美化LeetCode仓库

    LeetCode简介 leetcode是一个美国的在线编程网站,它收集了各大公司的经典算法面试题,用户可以选择不同...

  • 知识点总结

    GC算法 标记-清除算法,标记-整理算法,复制算法,分代收集算法 垃圾收集器 (1)Serial收集器 只用一个线...

  • 单细胞谱系分化高级算法

    2021.02.14今天收集了三个与谱系分化有关的单细胞高级算法:MAGIC(2018 Cell),PHATE(2...

  • 读书笔记-GC基础垃圾收集算法整理

    GC基础垃圾收集算法整理 简单概括如下4种算法: 标记-清除算法 复制算法 标记-整理算法 分代收集算法 对象死亡...

网友评论

    本文标题:有关算法的面试题收集

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