包建强的培训课程(5):算法与数据结构

                                                               算法与数据结构

一、     简介

本课程是基于数据结构来设计的,搜罗了各大公司面试过程中经常被问到的300多个算法题目,从中遴选出70道经典题目,分为单链表、数组、二叉树、栈、数字、逻辑推理等多个类别。

 

本课程将培训学员的逻辑思维能力,学以致用,在实战中编写出性能更好、逻辑更严谨的程序。

 

本课程适用于1-2年开发经验的程序员,对设计模式和算法有一些了解。

 

二、     培训大纲(2-4天)

 

1 上午 单链表

l   单链表的定义

l   单链表反转

l   倒数第四个元素

l   中间元素

l   删除无头单链表的一个节点

l   合并两个不交叉的有序链表

l   交换单链表中的任意两个元素

l   判断单链表是否有环

l   判断两个单链表是否相交,是则给出交点

l   用链表模拟大整数的加法运算

l   单链表排序

l   删除单链表中重复的元素

 

1 下午 栈和队列

l   栈和队列的定义

l   设计含有min函数的栈,要去算法复杂度为o(1)

l   用两个栈实现队列

l   用两个队列实现栈

l   判断栈的pushpop序列是否一致

l   递归反转一个栈,要求空间复杂度o(1)

l   如何用一个数组实现两个栈

l   如何用一个数组实现三个栈

 

2 上午 二叉树

l   二叉树的定义

l   三种周游方式

l   从顶部逐层打印二叉树的节点数据

l   如果判断一棵树是否为平衡二叉树

l   找出二叉树上任意两个节点的最近共同父结点

l   如何不用递归实现二叉树的前序/后序/中序遍历?

l   在二叉树中找出和为某一值的所有路径

l   把一个有序整数数组放到二叉树中?

l   判断整数序列是不是二叉搜索树的后序遍历结果

l   求二叉树的镜像

l   把二叉搜索树转变成排序的双向链表

 

2 下午 数组

l   查找数组中的唯一的重复元素(2

l   删除数组中的唯一的重复元素(14

l   删除有序数组中的重复元素,空间复杂度O(26)

l   11000存放在1001个元素的数组中,如何找出其中的一个重复数字(6

l   找出数组中只出现了奇数次的1个数字,其它元素都成对出现(7

l   查找数组的最大最小值(3

l   长度为n的数组,存放了0n范围内的整数,如何判断其中是否有重复元素,要求空间复杂度0(1)8

l   数组的循环右移(13

l   “最大和”连续子序列(20

l   调整数组顺序使奇数位于偶数前面(28

l   判断有序数组中是否存在两个唯一的元素(45

 

3 上午 数字

l   按位反转数字(1234=4321

l   求从1加到n

l   用加法实现减法

l   把字符串转换成蒸熟

l   Fibnacci数列的3种算法

l   整数分割

l   大数的模计算

l   Excel的数字转字母

l   根据(15)随机数生成器,生成(17)随机数

l   计算质数、完全数、水仙花数、快乐数、回文数

l   删除100位数字后的最大数

l   找出2n个数字中重复n次出现的数字

 

3 下午 杂题

l   扑克牌洗牌算法

l   判断一个点是否在三角形内

l   IntStr函数的实现

l   写一个检查字符串是否是整数的函数,如果是则返回这个整数。

l   递归反转一个栈

l   栈的排序

l   八皇后问题

l   8x8的棋盘一共有多少长方形和正方形

l  

 

4 上午 逻辑推理

l   给你一个打乱的魔法,如何在第二天把它调整好

l   一根金条付薪水

l   寻找四个药丸罐子中某个被污染的药丸罐

l   大象背香蕉问题

l   谷歌赛马

l   九个点画十条直线,每条直线至少有三个交点

l   烧绳子算时间

l   高楼扔鸡蛋

l   海盗分金子

l   7克、2克砝码各一个,天平一只,如何只用天平称三次将140克的盐分成5090克各一份

 

 

 

posted @ 2016-10-02 23:51  包建强  Views(668)  Comments(0Edit  收藏  举报