Leetcode Basic Problems Checklist

基础编程题总结

Posted by Eryn on March 2, 2020

### CheckList 所有要背诵的模板:

  • LRU
  • LFU
  • quicksort
  • mergesort
  • binary search
  • merge K sorted list
  • Add 2 numbers
  • number of islands
  • combination sum
  • permutations
  • subsets
  • Pre-order tree traversal
  • In-order tree traversal
  • Post-order tree traversal

背诵准备题: 二叉树前中后序遍历, Trie, Number of Islands 课上练习部分: Binary Tree Level Order Traversal, Binary Tree Level Order Traversal II, Minimum Depth of Binary Tree, Number of Islands, Course Schedule, The Maze 算法部分: BFS

课上习题: 背诵题讲解,标准代码分享: shorturl.at/bqvKQ

课后练习: Word Ladder(可看答案) Binary Tree Zigzag Level Order Traversal The Maze II Clone Graph(下一次课讲,可跳过) 01 Matrix Binary Tree Right Side View


Class 3

背诵准备题:

  • Combination Sum
  • Permutations
  • Subsets

课上练习部分: Path Sum I/II, Target Sum, Lowest Common Ancestor of a Binary Tree/BST, Jump Game, Increasing Subsequences, 01 Matrix, Find Bottom Left Tree Value, 算法部分:DFS

课上习题: 背诵题讲解,标准代码分享: shorturl.at/bqvKQ

课后练习: Validate Binary Search Tree Longest Increasing Subsequence, Symmetric Tree / Same tree

  • SubSets II
  • Combination Sum II
  • Permutations II Letter Combinations of a Phone Number

Class 4

课上练习部分:
Reverse Linked List I/II, Palindrome Linked List, Odd Even Linked List, Partition List, Linked List Cycle, Intersection of Two Linked List, Copy List With Random Pointer, 树前中后序遍历模版,Print Nodes in Top View of Binary Tree 涉及算法:
快慢指针, LinkedList, Tree Traverse 课上习题:
背诵题讲解,标准代码分享: shorturl.at/bqvKQ 课后练习:

  • Remove Linked List Elements,
  • Remove Duplicates from Sorted List I/II,
  • Intersection of Two Arrays I/II,
  • Next Greater Node In Linked List,
  • Reverse Nodes in k-Group,

class 5

背诵准备题:
LRU(LinkedHashMap), LFU (LinkedHashMap), 前中后序遍历(独特写法) 课上练习部分:
Remove Duplicates from Sorted Array, Sort Colors, Longest Substring Without Repeating Characters, 2/3 Sum, Minimum Size Subarray Sum, Container With Most Water, Valid Parentheses, Multiply Strings, Move Zeroes, Group Anagrams, Merge Intervals
涉及算法:
指针, 基本数据结构, DFS 课上习题:
背诵题讲解,标准代码分享: shorturl.at/bqvKQ
课后练习:

  • Reverse Vowels of a String,
  • Set Matrix Zeroes,
  • Subarray Product Less Than K,
  • Longest Mountain in Array,
  • Majority elements,
  • Remove Duplicates from sorted array I/II,

class 7

背诵部分:
Serialize/Deserialize BST, Construct Binary Tree from Preorder/PostOrder
课上练习部分:
关于Graph上的DFS, BFS 涉及算法:
BST, DFS, Graph
课后练习:

  • Increasing Order Search Tree,
  • Symmetric Tree,
  • Same Tree,
  • Flood Fill,
  • Keys and Rooms

class 8

课上练习部分:
Number of Airplanes in the Sky(Lintcode), Meeting Rooms I/ II, Product of Array Except Self, Factor Combinations, Binary Tree Paths, Inorder Successor in BST, Game of Life, Longest Increasing Subsequence, Unique Paths I/II
涉及算法:
扫描线, 过题
课上习题:
背诵题讲解,标准代码分享: 课后练习:

  • H-Index,
  • Find the Celebrity,
  • Range Sum Query – Immutable,
  • Maximum Size Subarray Sum Equals k,
  • Verify Preorder Serialization of a Binary Tree,
  • Largest BST Subtree,
  • Increasing Triplet Subsequence,

Product of Array Except Self

  • 题目: 输出一个新的array,每个位置的值是除了自己以外所有原array值得乘积
  • 思路就是遍历两次
  • 一次得到的是从左到右的-不包含i自己-的累计-乘积,另一个遍历是从右到左
  • 然后每个点i,拥有了两个值,一个是左边所有的乘积,一个是右边所有的乘积,都不包括自己
  • 将两者相乘,就是i的值
  • O(1) space就是同样的逻辑,但是在res array上操作
    • 先遍历第一遍,i的值从右到左的..的乘积
    • 然后从左到右,用temp得到第二次的乘积,再与res array[i]相乘(第一遍的值)
    • 注意temp要另外维护,不能够和res array的元素相乘,因为res array在动态变化
    • 注意第二次遍历前要先用一个int留住res[0]最后再pass回来