平面设计图网站有哪些?营销型网站建设必须的步骤包括
2026/2/12 22:38:50 网站建设 项目流程
平面设计图网站有哪些?,营销型网站建设必须的步骤包括,公职单位建设网站的目的,高端设计公司场景想象#xff1a; 你在排队处理一串项链上的珠子#xff08;字符串#xff09;#xff0c;你的任务是截取一段颜色都不重复的珠子。 右指针 (right)#xff1a;负责探索#xff0c;一颗颗把珠子纳入口袋。 左指针 (left)#xff1a;负责“止损”。 一旦右指针发现你在排队处理一串项链上的珠子字符串你的任务是截取一段颜色都不重复的珠子。右指针 (right)负责探索一颗颗把珠子纳入口袋。左指针 (left)负责“止损”。一旦右指针发现“哎呀这颗红珠子a我口袋里已经有一颗了”这时候左指针不需要一步步往右挪它可以直接跳到口袋里那颗旧红珠子的后面一位。因为旧红珠子前面的所有区间只要包含旧红珠子就一定会有重复所以统统不要了力扣 3. 无重复字符的最长子串https://leetcode.cn/problems/longest-substring-without-repeating-characters/题目分析输入字符串s。目标找到其中不含有重复字符的最长子串的长度。输出长度数值。例子s abcabcbb[abc]: 无重复长3。遇到第二个a重复了左指针如果不跳还在第一个a那里那就是abca重复。左指针必须跳过第一个a来到b的位置。当前窗口变[bca]。遇到第二个b左指针跳过旧的b来到c的位置。当前窗口变[cab]。...核心思维Map 记录索引 懒加载跳跃我们需要一个哈希表 (Map)来记录“某个字符上一次出现在什么位置下标”。关键逻辑当right遇到一个字符c且c在 Map 里存在时说明遇到重复了。我们需要把left更新到Map.get(c) 1的位置也就是重复字符的下一位。但是有个惊天大坑比如abba。遇到第二个b时left跳到了2(第二个b的位置)。接着遇到第二个a。Map 里记着第一个a在0。如果你直接left map.get(a) 1left会跳回1。这就倒车了left只能往右走不能往回退。所以正确的逻辑是left Math.max(left, map.get(c) 1)。代码实现 (JavaScript)JavaScript/** * param {string} s * return {number} */ var lengthOfLongestSubstring function(s) { // 记录字符上一次出现的位置 // key: 字符, value: 索引 index let map new Map(); let left 0; let maxLen 0; for (let right 0; right s.length; right) { const c s[right]; // 1. 如果 map 里有这个字符说明可能是重复项 if (map.has(c)) { // 2. 更新左边界 // 核心只能向右跳不能倒车 // 比如 abba遇到第二个 a 时map.get(a) 是 0但 left 已经在 2 了 // 所以必须取 max left Math.max(left, map.get(c) 1); } // 3. 更新/记录当前字符的最新位置 map.set(c, right); // 4. 更新最大长度 // 当前窗口长度 right - left 1 maxLen Math.max(maxLen, right - left 1); } return maxLen; };深度模拟abbaright0(a): map无。map{a:0}。max1。right1(b): map无。map{a:0, b:1}。max2。right2(b):重复map有 b (index 1)。left max(0, 1 1) 2。左指针跳到 index 2。此时窗口是b(index 2)。更新map{a:0, b:2}。len 2 - 2 1 1。max还是 2。right3(a):重复map有 a (index 0)。left max(2, 0 1)。注意如果不取 maxleft会退回到 1。但我们取 max所以left保持在 2。逻辑含义虽然a重复了但那个旧的a早就被之前的b重复事件给排除在窗口左边了所以不用管它。更新map{a:3, b:2}。len 3 - 2 1 2。总结这道题的精髓在于滑动窗口 哈希索引优化。 普通滑动窗口是left一步步挪而这道题利用 Map 实现了left的精准空降。记住那个坑left Math.max(left, map.get(c) 1)。这是防止“时光倒流”的护身符。下一题预告水果成篮做完了“无重复的最长子串”下一题LC 904. 水果成篮(Medium) 就是它的孪生兄弟。题目你有两个篮子每个篮子只能装一种类型的水果。目标找到最长的连续子序列使得其中至多包含两种不同的元素。比如[1, 2, 1, 2, 3]- 最长是[1, 2, 1, 2]长度 4。一旦遇到 3就变成三种了必须扔掉前面的。这道题其实就是“至多包含 K 个不同字符的最长子串”这里 K2。准备好去果园摘水果了吗逻辑和这道题非常像但 Map 的用法略有不同哦

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询