查找问题的思路
来源:4-4 使用查找表的经典问题 Two Sum
慕慕9414451
2017-12-09
老师,我自己对于查找问题的理解,主要方法是用顺序查找、二分查找、BST数和哈希表。
可是实际问题中,比如寻找数组中重复元素(n+1个整数,每个元素大小都在1~n之间),方法是一种二分查找的思路以及用到了查找链表环的思路。
因此,请问老师,是不是我做题不够呢?有没有遇到问题,就能有一种通用的解题思路呢?还请老师给一些学习建议。感激不尽!
写回答
1回答
-
你总结的思路近乎已经是比较常规的查找思路了。但是查找问题这个范围本身就无限大,计算机领域的很多问题本质都是查找。搜索引擎是查找;手机输入一个名字看电话是查找;指纹匹配图像识别都可以叫查找(查找和给定指纹最像的人员信息;查找和给定图像最相似的图片信息)。所以,妄图掌握“查找问题”这么大一个领域的所有思路,近乎可以说可能是不现实的。如果你能将所有查找问题规约成一种可以使用某个“通用思路”高效解决的问题,我觉得其程度就算比不上物理学上的大一统问题,也能轻松拿到图灵奖,在计算机科学史上记上重重的一笔:)
随便再举几个更具体的其他查找的例子:
当我们想要查找字符串的时候,可以使用Trie;
当我们要处理的信息是区间信息的时候,可以使用线段树或者BIT(Fenwick Tree);
在一个字符串中寻找子串也是查找问题,可以牵扯出一大串字符串匹配算法;
等等等等。
妄图找到一种通用的思路解决所有问题,近乎是不可能的。如果真是这样的话,算法也太容易了。我的体会是,很多时候学习真的没有捷径。如果真有捷径的话,大家智商都很高,早就都成为大师了。怎么办?或许唯有多见,多想,多实践吧。学无止境:)
加油!
322017-12-10
相似问题