1-4 如何回答算法面试官问题

    技术2023-05-23  79

    解决算法面试问题的整体思路

    注意题目中的条件

    给定一个有序数组 可以考虑用二分查找法有一些题目中的条件本质是暗示 设计一个O(nlogn)的算法   ——>    8成会使用分治法,也可能先排序,再做剩余的操作无需考虑额外的空间            ——>    可以考虑开辟额外的空间,用空间换时间数据规模大概是10000         ——>    可以考虑设计一个O(n^2)的算法,因为O(nlogn)的算法可以处理百万级或千万级的数据

    当没有思路的时候

    自己写几个简单的测试用例,试验一下暴力解法往往是思考的起点

    不要忽视暴力破解法

    在一个字符串中找没有重复字母的最长子串。

    对于字符串s的子串s[i...j]使用O(n^2)的算法遍历i,j,可以得到所有的子串s[i...j]使用O(length(s[i...j]))的算法,判断子串s[i...j]中是否包含重复字母,有则pass,无则更新最大值和最长子串。

    算法复杂度O(n^3),对于n = 100的数据,是可行的。

    优化算法

    遍历常见的算法思路遍历常见的数据结构空间和时间的交换(哈希表)预处理信息(排序)在瓶颈处寻找答案:O(nlog) + O(n^2);O(n^3)

    实际编写问题

    极端条件的判断

    传入数组为空?字符串为空?数量为0?指针为Null?

    变量名

    模块化,复用性

    对于基本问题,白板编程

    备注

    对于基本问题,做到白板编程。 

    Processed: 0.008, SQL: 9