算法题思路总结

降低时间复杂度的方法

  • 双指针法(常用于数组、链表、字符串)
    • 数组中,可以用来移除元素的时候降低时间复杂度,通过在一个循环里完成暴力解法两个循环才能完成的事情
    • 字符串中,反转字符串、替换字符等操作都可以使用到双指针
    • 链表里,反转链表、判断是否有环以及找环的入口都要用到双指针(快慢指针)(在链表中,与其它数据结构的题目不同,使用双指针不仅仅是为了降低时间复杂度,更是因为很多题只能利用双指针的解法)
    • 计算N数之和时,使用双指针可以将时间复杂度降为O(n^(N-1)),同时也更便于进行N元组去重操作
  • 哈希法(适用于查询元素的场景)

固定规律处理某类数据时

  • 考虑在for循环上做文章,从而避免复杂的if-else判断,如每隔k个字符处理一次,可以直接把for循环的步长设为k

需要判断当前值与上一值之间的关系时

  • 使用栈结构或双指针法

字符串类题目

  • 双指针法很常用
  • KMP法对于字符串匹配很重要

你可能感兴趣的:(Leetcode,代码随想录(Python),python,算法)