随笔分类 -  一直搞不懂的算法

摘要:求最大公约数的常用方法有辗转相除法和更相减损术。 1. 辗转相除法 又叫欧几里得算术,该算法基于如下定理: 两个正整数 a 和 b(a > b),它们的最大公约数等于 a 除以 b 的余数 c 和 b 之间的最大公约数。 代码如下: function gcd(a, b) { if (a % b 0) 阅读全文
posted @ 2022-04-09 20:55 尹宇星_Kim 阅读(821) 评论(0) 推荐(0)
摘要:用 max 变量保存最大数组和,用 sum 变量保存当前的累加结果,每次加入新元素 num 之前,先判断下当前的 sum 是否小于 0。 if (sum < 0) 则重置 sum 为当前元素,即 sum = num,因为小于 0 的负数肯定是对结果产生负面影响的。 if (sum >= 0) 则直接 阅读全文
posted @ 2022-04-02 11:40 尹宇星_Kim 阅读(39) 评论(0) 推荐(0)
摘要:这题在官方题解里面没有 JavaScript 版的,Python 版的也用了一些内容的高级方法,自己折腾了一番用 JS 写了个通过的版本,如下 var busiestServers = function (k, arrival, load) { const servers = Array(k) .f 阅读全文
posted @ 2022-03-31 08:59 尹宇星_Kim 阅读(46) 评论(0) 推荐(0)
摘要:双端队列在 STL 中的实现方式是使用一个数组,数组里的每个元素都指向一段固定大小的内存(默认使 512kb)的开始位置。 当一段内存空间用完的时候,会再申请一段同样大小的新内存空间接在现在内存空间后面,然将这段新内存空间的开始位置记录到上面说的数组中。 双端队列相比数组,有两个优势: 扩容成本低, 阅读全文
posted @ 2022-02-12 12:07 尹宇星_Kim 阅读(150) 评论(0) 推荐(0)
摘要:以终为始 - 从终点开始倒推 思考有几条途径可以到达当前的状态,例如对于二维数组来说,到达 (i,j),可能有 (i-1,j)、(i,j-1)、 (i+1,j)、(i,j+1) 等等 确定选取策略 - 比如有三条路径可以过来,每条路径都带有一定的信息,结合策略(例如 min、max ...)和信息, 阅读全文
posted @ 2021-06-15 21:38 尹宇星_Kim 阅读(53) 评论(0) 推荐(0)