第 112 场 LeetCode 双周赛题解

A 判断通过操作能否让字符串相等 I

在这里插入图片描述

s 1 s1 s1 s 2 s2 s2 1 1 1 2 2 2位若同位置不等,则 s 1 s1 s1交换对应的 i i i j j j位置,之后判断 s 1 s1 s1 s 2 s2 s2是否相当

class Solution {
public:bool canBeEqual(string s1, string s2) {for (int i = 0; i + 2 < 4; i++)if (s1[i] != s2[i])swap(s1[i], s1[i + 2]);return s1 == s2;}
};

B 判断通过操作能否让字符串相等 II

在这里插入图片描述

排序:一个字符串中下标奇偶性相同的位置可以任意交换,所以将字符串按下标奇偶划分成两个子串,再对子串分别排序,再分别比较两个串的子串

class Solution {
public:bool checkStrings(string s1, string s2) {string a1, b1, a2, b2;for (int i = 0; i < s1.size(); i++)if (i & 1)a1.push_back(s1[i]);elseb1.push_back(s1[i]);for (int i = 0; i < s2.size(); i++)if (i & 1)a2.push_back(s2[i]);elseb2.push_back(s2[i]);sort(a1.begin(), a1.end());sort(b1.begin(), b1.end());sort(a2.begin(), a2.end());sort(b2.begin(), b2.end());return a1 == a2 && b1 == b2;}
};

C 几乎唯一子数组的最大和

在这里插入图片描述

滑动窗口+哈希:用滑动窗口枚举长为 k k k 的子数组,用哈希表记录子数组中各元素出现的次数,以维护当前子数组中不同元素的个数

class Solution {
public:long long maxSum(vector<int> &nums, int m, int k) {unordered_map<int, int> f;//子数组中各元素出现的次数int cnt = 0;//当前子数组中不同元素的个数long long s = 0;//当前子数组元素和for (int i = 0; i < k - 1; i++) {if (++f[nums[i]] == 1)cnt++;s += nums[i];}long long res = 0;for (int l = 0, r = k - 1; r < nums.size(); l++, r++) {//枚举长为k的子数组nums[l,r]if (++f[nums[r]] == 1)cnt++;s += nums[r];if (cnt >= m)res = max(res, s);if (--f[nums[l]] == 0)cnt--;s -= nums[l];}return res;}
};

D 统计一个字符串的 k 子序列美丽值最大的数目

在这里插入图片描述

排序+计数:当 k > 26 k>26 k>26 时显然不存在 k k k 子序列,所以答案为0。当 k ≤ 26 k\le 26 k26 时,将字符出现次数数组 f f f 降序排序,设排序后的 f f f 中大小关系有: f 0 ≥ ⋯ > f l = ⋯ = f k − 1 = ⋯ = f r > ⋯ f_0\ge\cdots>f_l=\cdots=f_{k-1}=\cdots=f_r>\cdots f0>fl==fk1==fr>
则在美丽值最大的 k k k 子序列中,前 l l l 个不同字符是必选的,之后会在 [ l , r ] [l,r] [l,r] 范围内选 k − l k-l kl 个不同的字符,所以答案即为(注意取模): ( ∏ k = 0 k < l f k ) × ( r − l + 1 k − l ) × ( f k − 1 ) k − l \left ( \prod_{k=0}^{k<l} f_k \right ) \times \binom{r-l+1}{k-l} \times (f_{k-1})^{k-l} (k=0k<lfk)×(klrl+1)×(fk1)kl

class Solution {
public:using ll = long long;ll mod = 1e9 + 7;ll c[27][27];ll get(int n, int k) {//求组合数: C(n,k)if (c[n][k] != INT64_MIN)return c[n][k];if (k == 0 || n == k)return c[n][k] = 1;return c[n][k] = (get(n - 1, k) + get(n - 1, k - 1)) % mod;}ll fpow(ll x, ll n) {//快速幂: x^nll res = 1;for (ll e = x; n; e = (e * e) % mod, n >>= 1)if (n & 1)res = (res * e) % mod;return res;}int countKSubsequencesWithMaxBeauty(string s, int k) {if (k > 26)return 0;vector<ll> f(26);for (auto &c: s)f[c - 'a']++;sort(f.begin(), f.end(), greater<int>());//降序排序if (f[k - 1] == 0)//不存在k子序列return 0;int r = k - 1;while (r + 1 < 26 && f[r] == f[r + 1])//定位rr++;ll res = 1;int l = 0;for (; f[l] != f[k - 1]; l++)res = (res * f[l]) % mod;for (int i = 0; i <= 26; i++)for (int j = 0; j <= 26; j++)c[i][j] = INT64_MIN;//初始化标志res = (res * fpow(f[k - 1], k - l) % mod * get(r - l + 1, k - l)) % mod;return (res + mod) % mod;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/94762.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全脑建模:过去、现在和未来

什么是全脑建模&#xff1f; 全脑建模(WBM)是计算神经科学的子领域&#xff0c;涉及近似全脑神经活动的计算和理论模型。该方法的目标是研究神经活动的宏观时空模式如何由解剖连接结构、内在神经动力学和外部扰动(感觉、认知、药理、电磁等)的相互作用产生。这种宏观现象及其模…

CSS3D+动画

CSS3D 1.css3D 给父元素设置 perspective:景深:近大远小的效果900-1200px这个范围内 transform-style:是否设置3D环境 flat 2D环境 默认值 perserve-3D环境 3D功能函数 1.位移: translateZ()translate3D(x,y,z) <!DOCTYPE html> <html lang"en"><h…

CDH6.3.2集成Kerberos

CDH6.3.2集成Kerberos 一.参考doc CDH enable kerberos: Kerberos Security Artifacts Overview | 6.3.x | Cloudera Documentation CDH disable kerberos:https://www.sameerahmad.net/blog/disable-kerberos-on-CDH; https://community.cloudera.com/t5/Support-Questions…

图像处理简介

目录 基本术语 1 .图像(image) 1.1 像素(Pixel) 1.2 颜色深度&#xff08;Color Depth&#xff09; 1.3 分辨率&#xff08;Resolution&#xff09; 1.4 像素宽高比&#xff08;Pixel Aspect Ratio&#xff09; 1.5 帧率(FPS) 1.6 码率&#xff08;BR&#xff09; 1. …

数据库(MySQL)的存储过程

一、存储过程介绍 存储过程是事先经过编译并存储在数据库中的一段SQL 语句的集合&#xff0c;调用存储过程可以简化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&#xff0c;对于提高数据处理的效率是有好处的。 存储过程思想上很简单&#xff0…

音频——I2S 右对齐模式(四)

I2S 基本概念飞利浦(I2S)标准模式左(MSB)对齐标准模式右(LSB)对齐标准模式DSP 模式TDM 模式 文章目录 I2S right时序图逻辑分析仪抓包 I2S right I2S 右对齐标准 也叫日本格式&#xff0c;sony 格式。相比于标准左对齐格式&#xff0c;标准右对齐的不足在于接收设备必须事先知…

53 个 CSS 特效 3(完)

53 个 CSS 特效 3&#xff08;完&#xff09; 前两篇地址&#xff1a; 53 个 CSS 特效 153 个 CSS 特效 2 这里是第 33 到 53 个&#xff0c;很多内容都挺重复的&#xff0c;所以这里解释没之前的细&#xff0c;如果漏了一些之前的笔记会补一下&#xff0c;写过的就会跳过。…

11 - 深入了解NIO的优化实现原理

Tomcat 中经常被提到的一个调优就是修改线程的 I/O 模型。Tomcat 8.5 版本之前&#xff0c;默认情况下使用的是 BIO 线程模型&#xff0c;如果在高负载、高并发的场景下&#xff0c;可以通过设置 NIO 线程模型&#xff0c;来提高系统的网络通信性能。 我们可以通过一个性能对比…

STM32+RTThread配置以太网无法ping通,无法获取动态ip的问题

记录一个非常蠢的问题&#xff0c;今天在移植rtthread的以太网驱动的时候出现无法获取动态ip的问题&#xff0c;问题如下&#xff1a; 设置为动态ip时不管是连接路由器还是电脑主机都无法ping通&#xff0c;也无法获取dns地址。 设置为静态ip时无法ping通主机。 使用wireshark…

python自动化测试-自动化基本技术原理

1 概述 在之前的文章里面提到过&#xff1a;做自动化的首要本领就是要会 透过现象看本质 &#xff0c;落实到实际的IT工作中就是 透过界面看数据。 掌握上面的这样的本领可不是容易的事情&#xff0c;必须要有扎实的计算机理论基础&#xff0c;才能看到深层次的本质东西。 …

YOLOv7框架解析

YOLOv7概念 YOLOv7是基于YOLO系列的目标检测算法&#xff0c;由Ultra-Light-Fast-Detection&#xff08;ULFD&#xff09;和Scaled-YOLOv4两种算法结合而来。它是一种高效、准确的目标检测算法&#xff0c;具有以下特点&#xff1a; 1. 高效&#xff1a;YOLOv7在保持准确率的…

kafka详解二

kafka详解二 1、 offset 1.1 offset介绍 老版本 Consumer 的位移管理是依托于 Apache ZooKeeper 的&#xff0c;它会自动或手动地将位移数据提交到 ZooKeeper 中保存。当 Consumer 重启后&#xff0c;它能自动从 ZooKeeper 中读取位移数据&#xff0c;从而在上次消费截止的地…