结盟众多企业“教练”, 共同设计、开发及提供人才培养解决方案,通过新颖多样的学习方式,针对性的定制化内容,助力企业全面提升竞争优势。
包建强
3.5天
6000天
一、 简介
本课程是基于数据结构来设计的,搜罗了各大公司面试过程中经常被问到的300多个算法题目,从中遴选出70道经典题目,分为单链表、数组、二叉树、栈、数字、逻辑推理等多个类别。
本课程将培训学员的逻辑思维能力,学以致用,在实战中编写出性能更好、逻辑更严谨的程序。
本课程适用于1-2年开发经验的程序员,对设计模式和算法有一些了解。
主题 | 内容 |
---|---|
第1天 上午 单链表 |
单链表的定义 单链表反转 倒数第四个元素 中间元素 删除无头单链表的一个节点 合并两个不交叉的有序链表 交换单链表中的任意两个元素 判断单链表是否有环 判断两个单链表是否相交,是则给出交点 用链表模拟大整数的加法运算 单链表排序 删除单链表中重复的元素 |
第1天 下午 栈和队列 |
栈和队列的定义 设计含有min函数的栈,要去算法复杂度为o(1) 用两个栈实现队列 用两个队列实现栈 判断栈的push、pop序列是否一致 递归反转一个栈,要求空间复杂度o(1) 如何用一个数组实现两个栈 如何用一个数组实现三个栈 |
第2天 上午 二叉树 |
二叉树的定义 三种周游方式 从顶部逐层打印二叉树的节点数据 如果判断一棵树是否为平衡二叉树 找出二叉树上任意两个节点的最近共同父结点 如何不用递归实现二叉树的前序/后序/中序遍历? 在二叉树中找出和为某一值的所有路径 把一个有序整数数组放到二叉树中? 判断整数序列是不是二叉搜索树的后序遍历结果 求二叉树的镜像 把二叉搜索树转变成排序的双向链表 |
第2天 下午 数组 |
查找数组中的唯一的重复元素(2) 删除数组中的唯一的重复元素(14) 删除有序数组中的重复元素,空间复杂度O(26) 1到1000存放在1001个元素的数组中,如何找出其中的一个重复数字(6) 找出数组中只出现了奇数次的1个数字,其它元素都成对出现(7) 查找数组的最大最小值(3) 长度为n的数组,存放了0到n范围内的整数,如何判断其中是否有重复元素,要求空间复杂度0(1)(8) 数组的循环右移(13) “最大和”连续子序列(20) 调整数组顺序使奇数位于偶数前面(28) 判断有序数组中是否存在两个唯一的元素(45) |
第3天 上午 数字 |
按位反转数字(1234=)4321) 求从1加到n 用加法实现减法 把字符串转换成蒸熟 Fibnacci数列的3种算法 整数分割 大数的模计算 Excel的数字转字母 根据(1,5)随机数生成器,生成(1,7)随机数 计算质数、完全数、水仙花数、快乐数、回文数 删除100位数字后的最大数 找出2n个数字中重复n次出现的数字 |
第3天 下午 杂题 |
扑克牌洗牌算法 判断一个点是否在三角形内 IntStr函数的实现 写一个检查字符串是否是整数的函数,如果是则返回这个整数。 递归反转一个栈 栈的排序 八皇后问题 8x8的棋盘一共有多少长方形和正方形 拈 |
第4天 上午 逻辑推理 |
给你一个打乱的魔法,如何在第二天把它调整好 一根金条付薪水 寻找四个药丸罐子中某个被污染的药丸罐 大象背香蕉问题 谷歌赛马 九个点画十条直线,每条直线至少有三个交点 烧绳子算时间 高楼扔鸡蛋 海盗分金子 有7克、2克砝码各一个,天平一只,如何只用天平称三次将140克的盐分成50、90克各一份 |