【Hot100算法刷题集】哈希-02-字母异位词分组(含排序构造键、自定义键、自定义哈希函数法)
题目转载 题目描述 🔒link->题目跳转链接 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 题目示例 题目提示 ● 1 1 1 <= strs.length <= 1 0 4 10^4 104 ● 0 0 0 <= strs[i].length <= 100 100 100 ● strs[i] 仅包含小...
【oj刷题】滑动窗口篇:滑动窗口的应用场景和注意事项
前言: 目录 一、什么是滑动窗口? 二、滑动窗口的原理 三、滑动窗口的算法实现 四、滑动窗口的例题讲解 4.1. 长度最小的子数组 4.2 无重复字符的最长子串 4.3 找到字符串中所有字母异位词 一、什么是滑动窗口? 下面我们通过一道例题来具体的看一下滑动窗口是什么: 理解完题意之后我们就来看一下下面的讲解: 二、滑动窗口的原理 三、滑动窗口的算法实现 简单滑动窗口:假设窗口大小为k,数据序列为S,...
华为OD刷题C卷 - 每日刷题 21(按身高和体重排队,解密犯罪时间)
三段代码分别解决了三个不同的算法问题,下面是对它们的概述: 1、(按身高和体重排队): 这段代码是解决“按身高和体重排队”的问题。它提供了一个Java类Main,其中包含main方法,用于根据学生的身高和体重对学生进行排序,并输出排序后的学生编号。 main方法首先读取学生数量n,然后读取每个学生的身高和体重,存储到HashMap中。接着,使用StringJoiner来构建最终的排序结果字符串。通过...
【C++刷题】优选算法——前缀和
【模板】前缀和 int main(){ int n, q; cin >> n >> q; vector<long long> v(n+1, 0); for(int i = 1; i <= n; ++i) { cin >> v[i]; v[i] += v[i-1]; } int l, r; while(cin >> l >> r) { cout << v[r] - v[l - 1] << endl;...
【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积
【LeetCode刷题】Day 15 题目1:742.寻找数组的中心下标思路分析:思路1:前缀和思想 题目2:238.除自身以外数组的乘积思路分析思路1:前缀和思想 题目1:742.寻找数组的中心下标 思路分析: 其实题干说的很明白了,就是在表述,某个位置的前半部分数组和与后半部分数组和的结果相同,就是中心下标。 这里明显就是前缀和来求解。 思路1:前缀和思想 前半部分的和与后半部分的和分别用:前缀...
【LeetCode刷题】专题三:二分查找模板
【LeetCode刷题】Day 11 专题三:二分查找模板:1. 朴素二分模板:2. 区间左值模板:3. 区间右值模板: 题目1:704. 二分查找思路分析:思路1:朴素二分查找O(logN) 题目2:34. 在排序数组中查找元素的第一个和最后一个位置思路分析:思路1:区间左右值二分查找 O(logN) 专题三:二分查找模板: 根据题干分析,根据二分性,划分区间,得出二分最重要的几个要点: 判断条件...
【C++刷题】优选算法——递归第四辑
记忆化搜索篇 什么是记忆化搜索? 带 备忘录 的递归 如何实现记忆化搜索? a.添加一个备忘录 b.每次递归返回的时候,把结果放到备忘录里c.每次递归进入的时候,先查看一下备忘录 记忆化搜索 vs 常规动态规划: 相同点: 都是暴力解法(暴搜)优化方式都是把已经计算出的结果存起来 不同点: 记忆化搜索是递归形式常规动态规划是递推(循环)形式 问题: 所有的递归(暴搜、深搜),都能改成记忆化搜索吗? ...
【C++刷题】优选算法——递归第三辑
floodfill篇 图像渲染 unordered_multimap<int, int> direction = { {0, 1}, {0, -1}, {1, 0}, {-1, 0}};void dfs(vector<vector<int>>& image, int sr, int sc, int color, int val){ image[sr][sc] = color; for(auto...
【C++刷题】优选算法——动态规划第六辑
【模板】01背包 状态表示: dp1[i][j]: 表示从前i个物品中挑选总体积不超过j的物品,在所有的选法中,能挑选出的最大价值 dp2[i][j]: 表示从前i个物品中挑选总体积正好等于j的物品,在所有的选法中,能挑选出的最大价值优化: 利用滚动数组做空间上的优化 int main(){ int n, V; // n 物品个数 V 背包体积 cin >> n >> V; int v, w; ...
【代码随想录刷题记录】LeetCode209长度最小的子数组
题目地址 1. 思路 1.1 基本思路及代码实现 按照卡尔老师的思路,这个题目涉及到了一个重要的知识:滑动窗口,(卡尔老师的图片演示比我做的好,就看卡尔老师的图片演示就行,其中我的fast指针对应卡尔老师的j指针,我的slow指针对应卡尔老师的i指针),所谓滑动窗口和快慢指针差不多,我最开始的想法是这样的:用快慢指针slow和fast遍历这个数组,用一个整型变量sum保存每次子数组的求和结果,为了能...