zoukankan      html  css  js  c++  java
  • 算法和数据结构总览

    算法和数据结构总览

    如何精通一个领域

    1. Chunk it up 切碎知识点
    • 庖丁解牛
    • 脉络连接

    数据结构

    • 一维
      • 基础:数组array(string),链表linked list
      • 高级:栈stack,队列queue,双端队列deque,集合set,映射map(hash or map),……
    • 二维:
      • 基础:树tree,图graph
      • 高级:二叉搜索树binary search tree(red-black tree,AVL),堆heap,并查集disjoint set,字典树Trie,……
    • 特殊:
      • 位运算Bitwise,布隆过滤器BloomFiter
      • LRU Cache
        注意:了解每个数据结构的原理和代码框架
        数据结构脑图

    算法

    • if-else,switch——>branch(分支)
    • for,while loop——>iteration(循环,迭代)
    • 递归Recursion(Divide & Conquer,Backtrace)
    • 搜索Search:深度优先搜索Depth first search(DFS),广度优先搜索Breadth first search(BFS),A*,……
    • 动态规划Dynamic Programming
    • 二分查找Binary Search
    • 贪心Greedy
    • 数学Math,几何Geometry
      注意:在头脑中会议上面每种算法的思想和代码模板
      算法脑图
    1. Deliberate Practicing刻意练习

    职业化运动

    • 基本功是区别业余和职业选手的根本
    • 基础动作的分解训练和反复练习->最关键的点
      • 乒乓球
      • 台球
      • 滑雪

    练习的方法

    • 刻意练习——过遍数
    • 练习缺点、弱点地方
    • 不舒服、不爽、枯燥
    • 生活中例子:乒乓球、台球、游戏等等
    1. Feedback 反馈

    Feedback

    • 即时反馈
    • 主动型反馈(自己去寻找)
      • 看高手写代码(GitHub,LeetCode,……)
      • 第一视角直播
    • 被动式反馈(高手给你指点)
      • code review
      • 教练看你打,给你反馈

    切题四件套

    • Clarification(说明问题的解法)
    • Possible solutions(找到可以解决的方法)
      • compare(time/space)(比较时间复杂度和空间复杂度)
      • optimal(加强)(找到最佳的解法)
    • Coding(多写)
    • Test cases(举出测试用例)

    五步刷题法

    刷题第一遍

    • 5分钟:读题+思考
    • 直接看解法:注意!多解法,比较解法优劣
    • 背诵,默写好的解法

    刷题第二遍

    • 马上自己写——>LeetCode提交
    • 多种解法比较、体会->优化

    刷题第三遍

    • 过了一天后,再重复做题
    • 不同解法的熟练程度——>专项练习

    刷题第四遍

    • 过了一周,反复回来练习相同题目

    刷题第五遍

    • 面试前一周恢复性训练
  • 相关阅读:
    关于数据库 长度和小数点的关系和坑
    温故而知新,jquery选择器$=
    局域网访问本地localhost页面
    解决谷歌浏览器和360浏览器 input 自动填充淡黄色背景色的问题
    抢月饼 浏览器插件开发
    css 多行溢出
    ss服务待研究
    NUnit笔记
    5分钟实现VS2010整合NUnit进行单元测试
    vs2010中使用Nunit测试c#代码结果的正确性
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/12368789.html
Copyright © 2011-2022 走看看