搞业务逻辑也就图一乐,真想牛逼还得搞算法

DawninShadow 2020-01-01 PM 1752℃ 0条

做前端最大的感受就是每天都在跟各种业务逻辑打交道,做做这搞搞那,但最终好像都是在学一个又一个工具的使用,无非这个工具土里土气,那个工具花里胡哨而已,莫得灵魂,真要感受编程的快乐啊,还是得去玩算法....

WechatIMG17046.jpeg

小知识备忘

  • log(n)复杂度相当与二分法查变量,效率比n还高哦
  • 有log(n)这里时间复杂度要求的问题多为二分或递归,因为只有这些才会产生log(n)
  • JavaScript 语言里Number.MIN_VALUE竟然是最小的正值,而不是最小的Number,有一说一,这语音真的不适合拿来写算法.

想法

利用已知,反向思考.

对于很多问题我们应当聚焦于利用已知资源,最常见的就遍历的时候要从遍历过的元素中挖掘信息,而不是考虑那些会被未遍历项影响的结果.

  1. 典型的一个题目便是求众数多数元素 ,当我们关注到一个元素的时候只能知道它在之前出现过多少次,没法确定它是一个众数,因为之后可能有更多数量的其他元素.
    但是我们能确定它不是一个众数,只要之前遍历过的那些元素里有超过他数目的其他元素.

所以我们就能很好把求众数的问题化解为求不是众数的值,最后退出谁是众数

找到华点

盲生你找到了华点
有一说一,这种东西只能靠多练,以及老天爷赏脸.

  1. 相交链表
    两数组拼接长度相等,且有 __私A+公+私B____私B+公+私A__.真实太巧妙了
  2. 环形链表
    快慢指针,跑一遍就肯定能相遇,爽到.

DP

动态规划的核心思想在于最大化利用计算量,保证所有计算结果都建立在之前的计算结果之上.
__子状态,状态迁移方程,结束条件__.抓住着三点就能学好动态规划.
而很多动态规划的问题也都掺杂着一点贪心的思路在里边,这类问题一般对于一个状态都有几种解法,我们要就当前状态找到最好解法,然后这个状态的最优解就可以当做已知条件,为后面状态判定最优解的时候提供帮助了.如一下几题:

  标签: none

非特殊说明,本博所有文章均为博主原创。

评论啦~