解题方法分类

1. 滑动窗口。

2. 双指针。

3. 快慢指针。

4. 区间合并。

5. 循环排序。

6. 原地反转链表。

7. 树上的BFS。

8. 树上的DFS。

9. 双堆。

10. 子集。

11. 变种二分。

12. 最大前K个元素。

13. K-路归并。

14. 拓扑排序。

1. 滑动窗口。

2. 双指针。

3. 快慢指针。

4. 区间合并。

5. 循环排序。

6. 原地反转链表。

7. 树上的BFS。

8. 树上的DFS。

9. 双堆。

10. 子集。

11. 变种二分。

12. 最大前K个元素。

13. K-路归并。

14. 拓扑排序。

1. 滑动窗口。

2. 双指针。

3. 快慢指针。

4. 区间合并。

5. 循环排序。

6. 原地反转链表。

7. 树上的BFS。

8. 树上的DFS。

9. 双堆。

10. 子集。

11. 变种二分。

12. 最大前K个元素。

13. K-路归并。

14. 拓扑排序。

1. 滑动窗口。

  • 这个问题的输入是一些线性结构:比如链表呀,数组啊,字符串啊之类的
  • 让你去求最长/最短子字符串或是某些特定的长度要求

常见的问题有:

  • 窗口大小为K的最大子数组和(简单)
  • 拥有K个不同的字母的最长子串(中等)
  • 字符串的同字母异序词(困难)

2. 双指针。

识别使用双指针的招数:

  • 一般来说,数组或是链表是排好序的,你得在里头找一些组合满足某种限制条件
  • 这种组合可能是一对数,三个数,或是一个子数组

可以放双指针大招的题目:

  • 输出一个排好序的数组的平方数组(简单)
  • 3-Sum(中等)
  • 比较两个字符是否相等,字符中包括得有退格键(中等)

3. 快慢指针。

咋知道需要用快慢指针模式勒?

  • 问题需要处理环上的问题,比如环形链表和环形数组
  • 当你需要知道链表的长度或是某个特别位置的信息的时候

那啥时候用快慢指针而不是上面的双指针呢?

  • 有些情形下,咱们不应该用双指针,比如我们在单链表上不能往回移动的时候。一个典型的需要用到快慢指针的模式的是当你需要去判断一个链表是否是回文的时候。

快慢指针可秒的题目:

    • 链表是否有环(简单)
    • 链表是否满足回文(中等)
    • 环状数组中检测环(困难)

4. 区间合并。

怎么识别啥时候用合并区间模式呀?

  • 当你需要产生一堆相互之间没有交集的区间的时候
  • 当你听到重叠区间的时候

合并区间的题目:

    • 区间交集(中等)
    • 最大化CPU负载(困难)

5. 循环排序。

咋鉴别这种模式?

  • 这些问题一般设计到排序好的数组,而且数值一般满足于一定的区间
  • 如果问题让你需要在排好序/翻转过的数组中,寻找丢失的/重复的/最小的元素

能用循环排序解的题:

    • 需要数组中没出现的数字 (简单)
    • 寻找最小的没出现的正整数 (中等)

6. 原地反转链表。

咱们怎么去甄别这种模式呢?

  • 如果你被问到需要去翻转链表,要求不能使用额外空间的时候

这种模式的适用场景:

    • 翻转链表中的一段(中等)
    • 翻转每k个元素为一组的子链表段(中等)

7. 树上的BFS。

识别树上的BFS模式:

  • 如果你被问到去遍历树,需要按层操作的方式(也称作层序遍历)

该模式可解的题:

  • 二叉树层序遍历(简单)
  • 之字形遍历(中等)

8. 树上的DFS。

识别树形DFS:

  • 你需要按前中后序的DFS方式遍历树
  • 如果该问题的解一般离叶子节点比较近。

树形DFS可破的题目:

  • 树上所有路径上表示的数字的和(中等)
  • 树中所有能形成目标和的路径(中等)

9. 双堆。

判断双堆模式的秘诀:

  • 这种模式在优先队列,计划安排问题(Scheduling)中有奇效
  • 如果问题让你找一组数中的最大/最小/中位数
  • 有时候,这种模式在涉及到二叉树数据结构时也特别有用

典型问题:

    • 找数字流中的中位数(中等)

10. 子集。

如果判断这种子集模式:

  • 问题需要咱们去找数字的组合或是排列

子集模式适用的场景:

    • 有重复元素的所有子集(简单)
    • 通过改变大小写,找到所有可能的字符串排列(中等)

11. 变种二分。

变种二分可以解决的问题:

  • 顺序未知的二分(可能翻转过了,简单)
  • 无界排序数组的二分(中等)

12. 最大前K个元素。

识别最大K个元素模式:

  • 如果你需要求最大/最小/最频繁的前K个元素
  • 如果你需要通过排序去找一个特定的数

前K个元素模式的场景:

    • 前K大的数(简单)
    • 前K个最常出现的数字(中等)

13. K-路归并。

识别K路归并:

  • 该问题的输入是排好序的数组,链表或是矩阵
  • 如果问题让咱们合并多个排好序的集合,或是需要找这些集合中最小的元素

K路归并的题目:

  • 合并K个排好序的链表(中等)
  • K对数和最大(困难)

14. 拓扑排序。

拓扑排序模式识别:

  • 待解决的问题需要处理无环图
  • 你需要以一种有序的秩序更新输入元素
  • 需要处理的输入遵循某种特定的顺序

拓扑排序的试炼场:

  • 任务执行顺序安排(中等)
  • 树的最小高度(困难)

0

LeetCode按照解题方法分类题目的更多相关文章

  1. LeetCode链表解题模板

    一.通用方法以及题目分类 0.遍历链表 方法代码如下,head可以为空: ListNode* p = head; while(p!=NULL) p = p->next; 可以在这个代码上进行修改 ...

  2. 2017.11.11 B201 练习题思路及解题方法

    2017.11.11 B201 练习题思路及解题方法 题目类型及涵盖知识点 本次总共有6道题目,都属于MISC分类的题目,涵盖的知识点有 信息隐藏 暴力破解 音轨,摩斯电码 gif修改,base64原 ...

  3. 自动测试LeetCode用例方法

    自动合并测试LeetCode解题方法 在leetcode.com上答题,Run Code或者Sumbmit通常要Spending一会,如果提交一次就Accepted那还好,如果反复Wrong Answ ...

  4. LeetCode: Palindrome 回文相关题目

    LeetCode: Palindrome 回文相关题目汇总 LeetCode: Palindrome Partitioning 解题报告 LeetCode: Palindrome Partitioni ...

  5. LeetCode: Permutations 解题报告

    Permutations Given a collection of numbers, return all possible permutations. For example,[1,2,3] ha ...

  6. leetcode网解题心得——61. 旋转链表

    目录 leetcode网解题心得--61. 旋转链表 1.题目描述 2.算法分析: 3.用自然语言描述该算法 4.java语言实现 5.C语言实现 leetcode网解题心得--61. 旋转链表 1. ...

  7. 【noi 2.6_8787】数的划分(DP){附【转】整数划分的解题方法}

    题意:问把整数N分成K份的分法数.(与"放苹果"不同,在这题不可以有一份为空,但可以类比)解法:f[i][j]表示把i分成j份的方案数.f[i][j]=f[i-1][j-1](新开 ...

  8. IPC 方法分类

    IPC 方法分类 进程间通信 shell out 被调用程序在执行完毕之前接管用户的键盘和显示,退出后,调用程序重新控制键盘和显示并继续运行. 专门程序通常有文件系统与父进程进行通信,方法是在指定位置 ...

  9. LeetCode 169. Majority Element解题方法

    题目: Given an array of size n, find the majority element. The majority element is the element that ap ...

随机推荐

  1. Gulp-构建工具 相关内容整理

    Gulp- 简介 Automate and enhance your workflow | 用自动化构建工具增强你的工作流程 Gulp 是什么? gulp是前端开发过程中一种基于流的代码构建工具,是自 ...

  2. STM32F103芯片SPI控制NRF24L012.4G无线模块交互通信实验

    1.NRF24L01模块的资料百度搜索一下就有很多.这里我就不做介绍本文主要侧重于应用层面实验介绍与分享. 2.先看下原理图. 根据原理图:写出NRF24L01  C语言驱动文件如下: #includ ...

  3. docker 实践九:docker swarm

    介绍了 docker 三剑客中的 docker-machine 和 docker-compose 之后,就剩下一个 docker swarm 了.那本篇的主角就是它了. 注:环境为 CentOS7,d ...

  4. 解决找不到mkfs.ubifs命令

    解决找不到mkfs.ubifs命令 ubuntu 版本:14.04 sudo apt-get update sudo apt-get install mtd-utils sudo apt-get in ...

  5. php 调用 webservice 中文乱码解决方案

    webservice中有中文的话,返回的值就变成了乱码.查看了一下response的结果,是正确的.应该是用nusoap处理的时候出现了问题. 更改了nusoap.php两个地方就OK了. 更改的地方 ...

  6. .net通过网络路径下载文件至本地

    获取网络文件,通过流保存文件,由于上一版存在数据丢失情况,稍微调整了以下. //网络路径文件 string pathUrl = "http://localhost:805/春风吹.mp3&q ...

  7. jQuery效果之滑动

    jQuery 滑动方法有三种:slideDown().slideUp().slideToggle(). jQuery slideDown() 方法用于向下滑动元素, 语法:$(selector).sl ...

  8. mysql各版本驱动

    http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.9/

  9. Zabbix MySQL percona 模板部署

    Zabbix MySQL percona服务端执行以下操作https://www.zabbix.com/download?zabbix=4.0&os_distribution=centos&a ...

  10. Django中使用geetest验证

    一.geetest的使用方法 首先需要在setting中配置好文件 GEE_TEST = { "gee_test_access_id": "37ca5631edd1e88 ...