程序员算法解题方法与思路

如题所述

第1个回答  2022-07-15
此方法通过写出问题的一些特定的例子,分析总结其中的规律。具体而言,就是通过列举少量的特殊情况,经过分析,最后找出一般的关系。

问题与以前莫个算法解决过的问题相似,此时就可以触类旁通,尝试改进原有算法来解决

此方法首先将问题简单化,如改变数据类型、空间大小等,然后尝试着将简化后的问题解决。

为了降低问题的复杂度,很多时候都会将问题逐层分解,最后归结为一些简单的问题,这就是递归法

将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治法一般包括以下三个步骤:

1)将问题的实例划分为几个较小的实例,最好最有相等的规模。

2)对这些较小的实例求解,而最常见的方法一般是递归。

3)如歌有必要,合并这些较小问题的解,以得到原始问题的解。

一般而言,时间复杂度越低的算法越高效。而更想达到时间复杂度的高效,很多时候就必须在空间上有所牺牲,用空间来换时间。而用空间换时间最有效的方法就是Hash法、大数组和位图法。

在设计题目时,往往会有一个载体,这个载体便是数据结构。如数组、链表、二叉树和图等,当窄体确定后,可用的算法自然而然就会显现出来。可问题是很多时候并不确定这个载体是什么,当无法确定这个载体时,一般也就很难想到合适的方法了。

当遇到上面的问题时,可以采用最原始的思考问题的方式——轮询法。常考的数据结构与算法一共就几种,如下图

此种方法看似笨拙,却很实用,只要对常见的数据结构与算法烂熟于心,一点都没有问题。
相似回答