查找问题的思路

来源:4-4 使用查找表的经典问题 Two Sum

慕慕9414451

2017-12-09

老师,我自己对于查找问题的理解,主要方法是用顺序查找、二分查找、BST数和哈希表。

可是实际问题中,比如寻找数组中重复元素(n+1个整数,每个元素大小都在1~n之间),方法是一种二分查找的思路以及用到了查找链表环的思路。

因此,请问老师,是不是我做题不够呢?有没有遇到问题,就能有一种通用的解题思路呢?还请老师给一些学习建议。感激不尽!

写回答

1回答

liuyubobobo

2017-12-10

你总结的思路近乎已经是比较常规的查找思路了。但是查找问题这个范围本身就无限大,计算机领域的很多问题本质都是查找。搜索引擎是查找;手机输入一个名字看电话是查找;指纹匹配图像识别都可以叫查找(查找和给定指纹最像的人员信息;查找和给定图像最相似的图片信息)。所以,妄图掌握“查找问题”这么大一个领域的所有思路,近乎可以说可能是不现实的。如果你能将所有查找问题规约成一种可以使用某个“通用思路”高效解决的问题,我觉得其程度就算比不上物理学上的大一统问题,也能轻松拿到图灵奖,在计算机科学史上记上重重的一笔:)


随便再举几个更具体的其他查找的例子:

当我们想要查找字符串的时候,可以使用Trie;

当我们要处理的信息是区间信息的时候,可以使用线段树或者BIT(Fenwick Tree);

在一个字符串中寻找子串也是查找问题,可以牵扯出一大串字符串匹配算法;

等等等等。


妄图找到一种通用的思路解决所有问题,近乎是不可能的。如果真是这样的话,算法也太容易了。我的体会是,很多时候学习真的没有捷径。如果真有捷径的话,大家智商都很高,早就都成为大师了。怎么办?或许唯有多见,多想,多实践吧。学无止境:)


加油!

3
2
慕慕9414451
非常感谢!
2017-12-10
共2条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7410 学习 · 1150 问题

查看课程