• 算法学习 |从无到有 刷爆LeetCode算法神器


    开始文章输出之前,我没有着急下笔,而是认真的问了自己几个问题。

    我为什么要学算法?
    如何保持学习的热情和积极性?
    学到的算法是否可以应用到工作中?
    学到的算法怎么应用到工作中?
    如何实现从掌握到精通?

    我想每个学习周期,总要收获自己想要得到的东西,到底什么才是自己想要的或者需求要的。
    于是我面对比较新的技术,养成了提问自己->探索过程->找出答案的习惯。

    我理解的算法之美

    化繁为简

    日常无论是工作还是生活,有些场景可以借助算法,将复杂问题简单化。
    比如买东西时怎么挑性价比高的商品、怎么用优惠组合可以让价格更低、出行时哪条路线更便捷等。
    复杂一些的比如估算某件事的成本、某个规律性事件的数量、还有一些事件发生的概率以及什么概率下做决定比较多。
    这些事,单纯靠想象,是比较难处理的,如果代入一些公式进行计算得到结果,怎么做选择就一目了然了。

    降本提效

    我在探索算法的使用场景的时候,发现了很多有趣的例子。

    37%法则

    经过数学家欧拉的实验,以37%作为分界点,前面的时间用来观察,后面的时间用来作决策的一种方法。

    卖房子的时机

    只要你可以得到一系列报价,清楚报价金额的变化幅度,并且在这个变化范围内各种报价出现的可能性是相同的。只要报价不会中断(积蓄也不会花完),就可以单纯地考虑你对收获或损失的期望值,以决定是否继续等待更有利的交易。

    最优停车位置

    停车难题在于停车位占用率,即目前被占用的所有停车位占总停车位的比例。
    如果占用率很低,很容易找到一个好的停车位;如果占用率很高,想为你的车找到一席之地就困难了。
    上面这些被例子被涵盖进最优停止理论中,合理的选择停止观望的时机,可以帮助节省成本,提高效率。

    有规划成方圆

    在搜索省份和城市数据的时候,希望按照首字母进行分类展示。
    打开外卖APP,查看美食商家,可以按照距离筛选,也可以按照好评筛选。
    整理好装有100本书的书架和两个各有50本书的书架,哪个更费时?

    这些问题,如果没有建立排序,想想数据量,就令人头皮发麻。
    合理利用算法,可以为我们解决大数据量问题,也可以通过结果了解社会的本质。
    所谓社会,就是我们维持的另外一种更重要、规模更大的秩序。

    初探算法之门

    算法是指对特定问题求解步骤的一种描述。

    想要学好算法,一本专业的有趣的书籍,即可以帮助学习,又可以让人有读下去的欲望。

    网上的算法教程杂乱且分散,质量层次不齐,浪费了大家大量宝贵的时间。很多题解,在我掌握题目后去看都费劲,更何况对于一些初学者。

    今天小编在这分享两份算法宝典助力大家拿offer,一份在GitHub上35k多次登上Github Trending榜首的算法宝典,另外一份在某平台上阅读超11w+的算法刷题宝典,话不多说让我们跟着字节大佬一起团灭LeetCode和面试官,感受一下支配算法的乐趣。

    第一份:LeetCode算法收割机

    由于篇幅原因,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

    第一章:动态规划系列

    我们最火的就是动态规划系列的文章,也许是动态规划问题有难度而且有意思,也许因为它是面试常考题型。不管你之前是否害怕动态规划系列的问题,相信这一章的内容 足以帮助你消除对动态规划算法的恐惧。

    第二章:数据结构系列

    主要是一些特殊的数据结构设计,比如单调栈解决Next GreaterNumber,单调队列解决滑动窗口问题;还有常用数据结构的操作,比如链表、树、二叉堆。

    第三章:算法思维系列

    包含一些常用的算法技巧,比如前缀和、回溯思想、位操作、双指针如何正确书写二分查找等等。

    第四章:高频面试系列

    8说了,本章都是高频面试题,配合前面的动态规划系列,祝各位马到成功!

    第五章:计算机技术

    我们刷算法就是为了面试,说白了,算法不过是手段,是套路,是策略, 而不是最终目的。我们的最终目的是赚钱,是让我们自己以及我们的家庭过上更好的生活,所以熟练掌握工作中的常用工具,得心应手地做业务赚钱才是王道。

    第二份:算法刷题宝典

    掌握!所有的题解都以掌握二字为前提。不会追求过多的奇淫技巧,毕竟我们不是专门研究算法的人。我见过太多算法初学者,一个题解看不懂,转头又去看第二个题解,第二个看不懂,又去看第三个,直到最后放弃掉。浪费了时间,题目还是不会做,这图什么呢?所以本教程所有的题解都是以掌握为目标,尽量把每一道题的思路都讲的明明白白的。

    数组系列

    1. 两个数组的交集
    2. 最长公共前缀
    3. 买卖股票的最佳时机
    4. 旋转数组
    5. 原地删除
    6. 加一
    7. 两数之和

       

    链表系列

    1. 删除链表倒数第N个节点
    2. 合并两个有序链表
    3. 环形链表

       

    动态规划系列

    1. 爬楼梯
    2. 最大子序和
    3. 最长上升的序列
    4. 三角形最小路径和
    5. 最小路径和
    6. 打家劫舍

       

    字符串系列

    1. 反转字符串
    2. 字符串中的第一个唯一字符

       

    二叉树系列

    1. 最大深度与DFS
    2. 层次遍历与BFS
    3. BST与其验证
    4. BST的查找
    5. BST的删除
    6. 平衡二叉树
    7. 完全二叉树
    8. 二叉树的剪枝

       

    滑动窗口系列

    1. 滑动窗口最大值
    2. 无重复字符的最长子串
    3. 找到字符串中所有字母异位词

       

    博弈论系列

    1. 囚徒困境
    2. 辛普森悖论
    3. 红眼睛和蓝眼睛
    4. 海盗分金币
    5. 排序类题目
    6. 按奇偶排序数组

       

    位运算系列

    1. 使用位运算求和
    2. 2的幕
    3. 返回一个数二进制中1的个数
    4. 只出现一次的数字
    5. 只出现一-次的数字工
    6. 缺失数字

       

    二分法系列

    1. 爱吃香蕉的珂珂
    2. x的平方根
    3. 第一个错误的版本

       

    其他题目

    1. 螺旋矩阵
    2. 只有两个键的键盘
    3. 24点游戏
    4. 飞机座位分配概率
    5. 水分子的产生
    6. 救生艇
    7. 救生艇
    8. 灯泡开关
    9. 三门问题
    10. 猜数字游戏
    11. LRU缓存机制
    12. 最小的k个数
    13. 不同路径
    14. 不同路径-障碍物
    15. 伪蒙特卡洛
    16. 盛最多水的容器
    17. 扑克牌中的顺子容器
    18. 整数拆分
    19. 移动石子直到连续
    20. Nim游戏

       

  • 相关阅读:
    binlog格式设置
    这是什么代码帮我看看
    [附源码]Java计算机毕业设计SSM高等数学在线学习平台
    深入理解强化学习——多臂赌博机:基于置信度上界的动作选择
    数据结构----线性表之栈
    React进阶之路(一)-- JSX基础、组件基础
    C++DAY42
    mac下配置环境-node以及nvm
    干货 | 测试人职场晋升“潜规则”:15 年经验资深测试经理的职场忠告
    数据库基础
  • 原文地址:https://blog.csdn.net/LBWNB_Java/article/details/127715048