• 欢迎大家分享资料!前往留言板评论即可!

clamp/Lodash/“窗口滑动”

合宙 模组资料网 5个月前 (05-15) 67次浏览 已收录 0个评论 扫描二维码

章述:我,一个程序员的“白日梦”,一行代码解决一个需求;
吐槽:代码逻辑繁琐,脑细胞支撑不了

CSS(clamp)

undefined

场景:可能有一天你会想用一个css属性搭建一个自适应的项目(可能性还是比较小的。。。。但是确实存在实现该需求的东东)

使用 clamp() CSS函数,我们可以创建仅具有一个属性的响应式网站。

用法:
clamp(minimum, preferred, maximum);
三个属性:(属性值的类型不确定:px/%/vw/rem……等等)
minimum 最小值:例如 16px
flexible 弹性值/首选值:例如 5vw
maximum 最大值:例如 34px

h1 {
font-size: clamp(16px, 5vw, 34px);
}
在此示例中,仅当该值大于 16px 且小于 34px 时,h1 字体大小值将为视口宽度的 5%。

简单举例:
例如,如果你的视口宽度是 300px,你的 5vw 值将等于 15px,但是,你将该字体大小值限制为最小 16px,因此这就是将要发生的情况。
另一方面,如果你的视口宽度为 1400px,则 5vw 将高达 70px!但幸运的是,你将该最大值限制为 34px,因此它不会超过该值。

一句话:比小取小,比大取大

Lodash
社区链接:http://doc.openluat.com/article/1730/0
官网链接:https://www.lodashjs.com/

”窗口滑动类“
滑动窗口主要思路是维护一对指针,在一定条件内右移右指针扩大窗口大小直到窗口内的解不满足题意,此时我们需要根据情况移动左指针,重复移动左右指针的操作并在区间内求解,直到双指针不能再移动。
d:寻无重复最长子串长度

var lengthOfLongestSubstring = function(s) {
    // 用于存储指针移动过程中的值
    let map = {}
    // 双指针
    let left = 0
    let right = 0
    // 结果
    let count = 0
    // 指针移动终止条件
    while (right < s.length) {
        const char = s[right]
        // 根据题意我们需要寻找不重复的最长子串
        // 当 char 出现时我们需要移动左指针到重复字符的下一位
        if (char in map) {
            left = Math.max(left, map[char] + 1)
        }
        // 求解
        count = Math.max(count, right - left + 1)
        // 移动右指针并存下索引
        map[char] = right++
    }
    return count
};

通用解法

let left = 0
let right = 0
while (right < size) {
    获取当前索引数据
    right++
    更新操作
    while (窗口需要缩小) {
        left++
        移除操作
    }
}

右指针右移后数据的更新
判断窗口何时需要缩小
左指针右移后数据的更新
根据题目求最优解


转载请注明原文链接:clamp/Lodash/“窗口滑动”
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址