Google上岸算法刷题计划表


目录

  • 重点散列表:总结各种巧妙的应用,以及利用了散列表什么样的特点

  • 栈和队列的使用,python包的使用

  • 堆系统性学习

  • 排序算法总结 (05/16)

    • 排序算法,经典算法的要点在于什么?
    • 排序算法刷题
  • 搜索/二分搜索(05/20)

  • 树:实现下,前中后序遍历 (05/21-05/28)

    • 广搜深搜总结错题集
    • 线段树
    • dfs+memo
  • 图:实现

    • topology sort
  • 递归/动态规划,区分不同,以及重点题目总结

  • 链表和数组

  • 双指针

  • 贪心

  • 内存作为新知识点进行学习

  • 位操作的应用实例

  • 专项总结:这个topic的典型应用场景有哪些?模板是什么?精选例题+每道题可以怎样follow up?

    • 不同场景降低时间复杂度的方法有哪些
  • 谷歌专项刷题:先说不做,把所有该说的都说完,想follow up,和behaviro的准备同时进行,穿插着来

  • labuladong每个专题刷典型题

务必掌握它们的具体用法、实现方法、应用场景以及时间和空间复杂度

各种数据结构:重要的一点是使用:适用于什么场景,时间空间复杂度是什么?典型的应用有哪些。一定要弄清楚什么情况下该使用什么数据结构。

数据结构 算法 其他
链表:双指针 广度优先搜索 位操作
树、二叉树、单词查找树,segment tree 深度优先搜索 内存(堆和栈)
栈和队列 二分查找 LRUCache、LFUCache
排序:快排,归并,桶 大o时间和空间
向量/数组列表/字符串 分治法 并查集
散列表 滑动窗口 面向对象设计
贪心算法 系统设计与可扩展性
动态规划、递归 线程与锁

参考资料

笔记链接

基础

散列表

栈和队列(一:栈)

栈和队列(二:队列)

排序算法理论

排序算法力扣

二分搜索

树和图(一:树)

树和图(二:树的进阶)

树和图(三:图)

动态规划

专题

专题BFS和DFS

综合

python的字典复制,有几种方法,复制程度不一样

Python dictionary字典的复制方法_小桔帽的博客-CSDN博客_python复制字典

  • dict1=dict2,这个只是换个名字而已,并不能叫复制,对dict1做的操作,都会出现在dict2

  • dict1=dict2.copy(),这个是浅复制:复制后对原dict的内部子对象(方括号[]内元素)进行操作时,由浅复制得到的dict受该操作影响

    • dict1[a]=3不会影响到dict2[a]的值

    • dict1[a].append(3)会影响到dict2[a]的值

  • dict1=deepcopy(dict2),这个是深复制:复制后对原dict的内部子对象(方括号[]内元素)进行操作时,由深复制得到的dict不会受该操作影响

    • dict1[a]=3不会影响到dict2[a]的值

    • dict1[a].append(3)不会影响到dict2[a]的值

  • python的sortedlist怎么使用?

一个demo

from sortedcontainers import SortedList
class Solution:
    def countSmaller(self, nums: List[int]) -> List[int]:

        n = len(nums)
        res = [0] * n
        sl = SortedList()

        for i in range(n-1, -1, -1):        # 反向遍历
            cnt = sl.bisect_left(nums[i])   # 找到右边比当前值小的元素个数
            res[i] = cnt                    # 记入答案
            sl.add(nums[i])                 # 将当前值加入有序数组中

        return res

Author: Fululu
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Fululu !
  TOC