每日两题 / 438. 找到字符串中所有字母异位词 && 238. 除自身以外数组的乘积(LeetCode热题100)

438. 找到字符串中所有字母异位词 - 力扣(LeetCode)

记录p串每个字符出现次数

维护与p串等长的滑动窗口,记录其中每个字符的出现次数

每次滑动后将当前次数与p串的次数比较即可

cpp 复制代码
class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        unordered_map<char, int> mp, cnt;
        for (auto t : p)
            cnt[t] ++ ;
        for (int i = 0; i < p.size() - 1 && i < s.size(); ++ i)
            mp[s[i]] ++ ;
        vector<int> ans;
        for (int r = p.size() - 1, l = 0; r < s.size(); ++ r, ++ l)
        {
            mp[s[r]] ++ ;
            bool flag = true;
            for (auto t : mp)
            {
                if (t.second != cnt[t.first])
                {
                    flag = false;
                    break;
                }
            }
            mp[s[l]] -- ;
            if (flag) ans.push_back(l);
        }
        return ans;
    }
};

238. 除自身以外数组的乘积 - 力扣(LeetCode)

维护"前缀和"与"后缀和"数组即可

由于用nums作为前缀和数组,ans作为后缀和数组,即可达到空间复杂度为 O ( 1 ) O(1) O(1) 的要求

cpp 复制代码
class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        vector<int> ans = nums;
        for (int i = 1; i < nums.size(); ++ i)
            nums[i] *= nums[i - 1];
        for (int i = ans.size() - 2; i >= 0; -- i)
            ans[i] *= ans[i + 1];
        for (int i = 0; i < ans.size(); ++ i)
        {
            if (i == 0) ans[i] = ans[i + 1];
            else if (i == ans.size() - 1) ans[i] = nums[i - 1];
            else ans[i] = nums[i - 1] * ans[i + 1];
        }
        return ans;
    }
};
相关推荐
酉鬼女又兒几秒前
零基础快速入门前端蓝桥杯Web备考:BOM与定时器核心知识点详解(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·职场和发展·蓝桥杯
美狐美颜sdk5 分钟前
美颜SDK是什么?直播/短视频美颜SDK技术详解
人工智能·算法·美颜sdk·直播美颜sdk·美颜api
华农DrLai25 分钟前
什么是远程监督?怎么自动生成训练数据?
人工智能·算法·llm·prompt·知识图谱
计算机安禾27 分钟前
【数据结构与算法】第16篇:串(String)的定长顺序存储与朴素模式匹配
c语言·数据结构·c++·学习·算法·visual studio code·visual studio
Roselind_Yi28 分钟前
【吴恩达2026 Agentic AI】面试向+项目实战(含面试题+项目案例)-2
人工智能·python·机器学习·面试·职场和发展·langchain·agent
AI科技星35 分钟前
基于v≡c公设的理论优化方案
c语言·开发语言·算法·机器学习·数据挖掘
江不清丶36 分钟前
垃圾收集算法深度解析:从标记-清除到分代收集的演进之路
java·jvm·算法
Roselind_Yi38 分钟前
【吴恩达2026 Agentic AI】面试向+项目实战(含面试题+项目案例)-1
人工智能·python·面试·职场和发展·langchain·gpt-3·agent
副露のmagic38 分钟前
链表章节 leetcode 思路&实现
数据结构·leetcode·链表
wanderist.1 小时前
从Nim游戏到SG函数
c++·算法·蓝桥杯