码迷,mamicode.com
首页 > 编程语言 > 详细

算法题的五种解法

时间:2018-07-05 18:28:21      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:面试   程序员面试   查找   有序   没有   有序数组   示例   数据结构   image   

方法一:举例法

先列举一些具体的例子,看能否发现其中的一般规则。

示例:给定一个具体时间,计算时针与分针之间的角度。

技术分享图片

方法二:模式匹配法

将现有问题与相似问题作类比,看看内否通过修改相关问题的解法来解决新问题。

技术分享图片

分析:这个问题和两个问题有点类似

1)在一个无序的数组中查找最小的元素

  这个问题就是遍历所有元素即可,没有用到给定信息(这是一个有序数组),实在没办法再用这种。

2)在一个有序的数组中找出某个特定元素(比如通过二分查找法)

  这是一个有序数组,只是一部分元素循环移动过。因此元素排序肯定是从小到大,在某个位置突然变小,接着又开始从小到大排序。那个“转折点”正是最小的元素。

  比较中间元素和末尾元素(6和2),由于mid > right,可以确定这个转折点就在这两个元素之间。如果mid < right,则说明转折点要么在牵绊部分,要么根本不存在。

方法三:简化推广法

  简化推广法即分多步走,首先,我们会 修改某个约束条件,比如数据类型或数据量,从而简化这个问题。接着我们转而处理这个问题的简化版本。一旦找到解决了简化版问题的算法,我们就可以基于这个问题进行推广,让它适用于这个问题的复杂版本。

方法四:简单构造法

技术分享图片

技术分享图片

技术分享图片

技术分享图片

方法五:数据结构头脑风暴法

我们可以快速过一遍数据结构的列表,然后逐一尝试各种数据结构。这种方法很实用,因为一旦找到合适的数据结构,很多问题就迎刃而解。

技术分享图片

技术分享图片


技术分享图片

 

来自:

《程序员面试金典(第5版)》

算法题的五种解法

标签:面试   程序员面试   查找   有序   没有   有序数组   示例   数据结构   image   

原文地址:https://www.cnblogs.com/xdyixia/p/9226889.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!