心胸决定格局,眼界决定境界...

面试题集结

https://github.com/binbinmeng/algrithms_interview/wiki
一. 单链表相关问题
1. 链表的冒泡排序
2. 删除无头非尾节点
3. 反转链表
递归或者三个指针(两个指针赋值,while循环,第三个指针赋值,交换值) 4. 在当前节点前插入一个数据x 5. 查找链表的中间节点。
两个指针,一个2步,一个一步,当2步到结尾,一步则到中间 6. 删除单链表的倒数第K个节点(K>1&&K<总长度)(类似如中间节点操作)
两个指针,两个指针相差K-1,当前面指针到结尾时,后面的指针指向倒数第K个节点 7. 将两个有序单链表合并
类似归并 8. 判断链表是否有环,有环返回相遇节点
1个一步,一个二步,如果碰面,则有换,否则无环 9. 输入一个链表的头结点,从尾到头反过来打印出每个结点的值 10. 输入两个链表,找出它们的第一个公共结点
遍历到结尾,做差,遍历到这个差的位置 11. 约瑟夫环问题 0,1,3...,n - 1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字或者n个数的删除次序。 12.旋转单链表 给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数。 如给出链表为 1->2->3->4->5->NULL and k = 2, return 4->5->1->2->3->NULL. 13. 单链表排序 单链表的归并排序 单链表的插入排序 14. 划分链表 按某个给定值将链表划分为左边小于这个值,右边大于这个值的新链表 如一个链表 为 1 -> 4 -> 5 -> 2 给定一个数 3 则划分后的链表为 1-> 2 -> 4 -> 5 15. 链表相加求和 假设链表中每一个节点的值都在 0-9 之间,那么链表整体可以代表一个整数。 例如: 9->3->7 可以代表 937 给定两个这样的链表,头节点为 head1 head2 生成链表相加的新链表。 如 9->3->7 和 6 -> 3 生成的新链表应为 1 -> 0 -> 0 -> 0 16. 删除有序/无序链表中重复的元素 删除有序链表中的重复元素 删除无序链表中的重复元素 17. 重排链表 给定一个链表 1 -92 -8 -86 -9 -43 -20 链表的特征是奇数位升序,偶数位为降序,要求重新排列链表并保持链表整体为升序 18. 判断两个单链表(无环)是相交 19. 头插法/尾插法构建一个单链表 20. 和为定值的子List 给函数传递一个正整数的列表alist和一个正整数T,假装它等于[1,3,6,4,2,7],给出alist里所有相加等于T的元素的list,每个数只用一次。比如T=7,列表里3+4=7,7=7,1+6=7。你的函数就要返回[[3,4],[7],[1,6] 21. 从尾到头打印链表 22. 删除链表中重复的结点

  

posted @ 2019-02-26 14:59  WELEN  阅读(218)  评论(0)    收藏  举报