为什么不推荐用for...in遍历数组
两年前写的一个文章目录生成插件vue-outline,一直用着没出啥问题(本站的文章目录也是用该插件生成的)。但是最近一个网友在使用的时候却出现了异常报错,异常代码使用了一个for...in遍历数组导致出现了预料之外的情况。
svg实现环形进度条
环形进度条虽然很常用,但基本都是直接用各种组件库来搞,所以在此之前也没有自己真正实现过。偶然思考了以下这个问题,直接用CSS的话,好像还不太好实现,所以看了下svg实现的方案,也趁机熟悉一下svg——svg实现环形进度环出乎意料的简单。
编程探究喝酒时猜扑克牌游戏的胜率
小伙伴们喝酒时通常会玩一些小游戏,根据游戏胜负来决定谁被罚酒,猜扑克是其中一种常见的游戏。游戏规则如下: 游戏一般2人参与,游戏道具为一副扑克牌,任意一张扑克牌代表一个点数,A、2~10、J、Q、K分别代表1~13点(通常还会加入大小王,这里简单起见先不考虑)。 甲从一副扑克牌中任意抽出一张,自己查看后请乙猜测牌中数字。通常乙有3次机会,每次猜测后,若猜中甲抽出的牌,则乙胜利,游戏结束;否则甲根据情况告知乙的猜测偏大或者偏小,直到3次机会全部用完乙都没有猜中,则甲胜。 一直困惑我比较久的问题是第一次先猜哪个数字胜利的概率比较大,从喝酒的经验看,这个数并不一定是正中间的点数7。最近看到猜数字的编程题时突然想到这个小游戏,所以决定编程探究一下。
leetcode 375. 猜数字大小 II
我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字。 每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了。 然而,当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。直到你猜到我选的数字,你才算赢得了这个游戏。 给定 n ≥ 1,计算你至少需要拥有多少现金才能确保你能赢得这个游戏。
leetcode 5407. 切披萨的方案数(难度:困难)
给你一个 rows x cols 大小的矩形披萨和一个整数 k ,矩形包含两种字符: 'A' (表示苹果)和 '.' (表示空白格子)。你需要切披萨 k-1 次,得到 k 块披萨并送给别人。 切披萨的每一刀,先要选择是向垂直还是水平方向切,再在矩形的边界上选一个切的位置,将披萨一分为二。如果垂直地切披萨,那么需要把左边的部分送给一个人,如果水平地切,那么需要把上面的部分送给一个人。在切完最后一刀后,需要把剩下来的一块送给最后一个人。 请你返回确保每一块披萨包含 至少 一个苹果的切披萨方案数。
leetcode 5407. 切披萨的方案数(难度:困难)
leetcode 1224. 最大相等频率(难度:困难)
给出一个正整数数组 nums,请你帮忙从该数组中找出能满足下面要求的 最长 前缀,并返回其长度: 从前缀中 删除一个 元素后,使得所剩下的每个数字的出现次数相同。 如果删除这个元素后没有剩余元素存在,仍可认为每个数字都具有相同的出现次数(也就是 0 次)。
leetcode 396. 旋转函数(难度:中等)
给定一个长度为 n 的整数数组 A 。 假设 Bk 是数组 A 顺时针旋转 k 个位置后的数组,我们定义 A 的“旋转函数” F 为: F(k) = 0 * Bk[0] + 1 * Bk[1] + ... + (n-1) * Bk[n-1]。 计算F(0), F(1), ..., F(n-1)中的最大值。
Vue项目打包压缩:让页面更快响应
自己做测试用的一个小项目,虽然仅有三四个页面,因为服务器带宽太小了,加载时间过长的问题尤为明显,于是采用了路由懒加载和gzip压缩的方式优化了一下,访问速度得到了显著提升。