HATTER-LONG / AlgorithmTraining

LeetCode算法刷题训练

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LeetCode 算法刷题

Contributors Contributors Issues MIT License

  1. 二分法:循环不变量原则,只有在循环中坚持对区间的定义,才能清楚的把握循环中的各种细节。
  2. 双指针法:通过一个快指针和慢指针在一个 for 循环下完成两个 for 循环的工作。双指针法(快慢指针法)在数组和链表的操作中是非常常见的。
  3. 滑动窗口:滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将 O(n^2)的暴力解法降为 O(n)。
  4. 模拟行为:真正解决题目的代码都是简洁的,或者有原则性的。
  1. 虚拟头节点:虚拟头节点可以避免处理链表头节点与其他节点逻辑不一致的问题。
  2. 链表的基本操作:707 设计链表一题编写了完整的针对链表操作。
  3. 翻转链表:操作每个节点指针指向前一个节点位置,注意头节点处理。
  4. 删除倒数节点:可以通过双指针制造间隔后,实现 O(n) 删除指定的节点。
  5. 链表相交:使用双指针查找两个链表相交的节点。
  6. 环形链表:如何辨别有环,如何查找环的入口。

字符串

  1. 0014_最长公共前缀--code:

    编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。

    1 <= strs.length <= 200
    0 <= strs[i].length <= 200
    strs[i] 仅由小写英文字母组成
    
    -------------------------------------
    
    输入:strs = ["flower","flow","flight"]
    输出:"fl"
    
    -------------------------------------
    
    输入:strs = ["dog","racecar","car"]
    输出:""
    解释:输入不存在公共前缀。
    
    • 解题思路:选中第一个字符串为模版比对其他字符串同一偏移字符是否一致:
      1. 其他字符串长度结束,返回当前相同长度的子字符串;
      2. 其他字符串中有不同的字符;
      3. 所有第一个字符串的字符比对结束。

About

LeetCode算法刷题训练

License:Apache License 2.0


Languages

Language:C++ 91.3%Language:CMake 8.5%Language:Shell 0.2%