Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >蓝湖的题,不错!

蓝湖的题,不错!

作者头像
ACM算法日常
发布于 2021-12-20 10:25:56
发布于 2021-12-20 10:25:56
79800
代码可运行
举报
文章被收录于专栏:ACM算法日常ACM算法日常
运行总次数:0
代码可运行

蓝湖联名力扣周赛出的题目还不错,前三题比较温暖,最后一题带一点套路,总的来说都不难

涉及知识点:模拟,字符串,动态规划,最长上升子序列,二分优化

5956. 找出数组中的第一个回文字符串

给定一个字典 w ,找到第一个回文字符串,如果没有输出空字符串

题解

模拟

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// cpp
class Solution {
public:
    bool check(const string& s) {
        int i = 0, j = s.length() - 1;
        while (i <= j) {
            if (s[i++] != s[j--]) return 0;
        }
        return 1;
    }
    string firstPalindrome(vector<string>& w) {
        for (auto& i: w) if (check(i)) return i;
        return "";
    }
};

5957. 向字符串添加空格

给定一个字符串 s 和一个正整数数组 a ,按照 a 中的值给 s 中的对应位置添加空格

题解

两个指针扫描

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// cpp
class Solution {
public:
    string addSpaces(string s, vector<int>& spaces) {
        int j = 0;
        string ans;
        for (int i = 0; i < s.length(); ++i) {
            if (j < spaces.size() && i == spaces[j]) ans += ' ', ++j;
            ans += s[i];
        }
        return ans;
    }
};

5958. 股票平滑下跌阶段的数目

给定一个正整数数组 a 表示每天的股价,如果有一段区间依次递减 1 ,我们称之为平滑下跌,计算 a 中平滑下跌的区间个数

题解

简单 dp,定义 dp[i] 表示以第 i 天结尾,平滑下跌的天数,那么

  • a[i] + 1 = a[i - 1] ,则dp[i] = dp[i - 1] + 1
  • 否则,dp[i] = 1

根据状态转移方程计算,最后累加 dp 数组即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// cpp
class Solution {
public:
    long long getDescentPeriods(vector<int>& p) {
        int n = p.size();
        typedef long long LL;
        vector<LL> dp(n);
        dp[0] = 1;
        for (int i = 1; i < n; ++i) {
            if (p[i - 1] - 1 == p[i]) dp[i] = dp[i - 1] + 1;
            else dp[i] = 1;
        }
        LL ans = 0;
        for (int i = 0; i < n; ++i) ans += dp[i];
        return ans;
    }
};

5959. 使数组 K 递增的最少操作次数

给定一个正整数数组 a 和一个正整数 k ,如果对于每一个位置 i 都有 a[i - k] \leq a[i] ,那么我们称之为 k 递增现在你可以花费一个操作数,将 i 位置的元素 a]i] 变为任意正整数,请计算让 a 变得 k 递增的最小操作数数据规定,数组 a 的长度 n 满足1\leq n\leq 10^5

题解

一个简单的发现,变换后的数组满足a[i] \leq a[i + k]\leq a[i + 2k]\leq ... 因此我们把原数组可以拆成 k 个长为 \lfloor\frac{n}{k}\rfloor 的子数组

考虑子问题,给定一个长度为 m 的正整数数组 b ,可以任意变换元素的值,最少花费多少操作数使得 b 单调不减?

只需要计算最长不降子序列的长度 l ,那么答案即为 m - l ,具体可以参考 dilworth 定理我们对每个子数组都做这样的计算,最后求和即可,时间复杂度为\mathcal{O}(n\log\lfloor\frac{n}{k}\rfloor)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// cpp
class Solution {
public:
    int kIncreasing(vector<int>& arr, int k) {
        int n = arr.size(), ans = 0;
        for (int i = 0; i < k; ++i) {
            vector<int> dp;
            int cnt = 0;
            for (int j = i; j < n; j += k) {
                auto it = upper_bound(dp.begin(), dp.end(), arr[j]);
                if (it == dp.end()) dp.push_back(arr[j]);
                else *it = arr[j];
                ++cnt;
            }
            ans += cnt - dp.size();
        }
        return ans;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ACM算法日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
蔚来的题,偏思维,有点意思!
蔚来汽车联名力扣周赛的题目涉及的算法都很常见,但是都带了一点思维,作为头脑风暴是个不错的选择。
ACM算法日常
2021/12/28
7580
新鲜出炉的阿里、虾皮和网易笔试题解
9.18 日网易笔试在牛客上闹出大瓜,笔试还没结束的时候候选人在牛客评论区公然交流代码,事后牛客工作人员获取了后台记录,并上报给了网易,直接取消了 50 余人的校招资格
ACM算法日常
2021/09/28
1.2K0
涉及众多面试中高级知识点的周赛,盘它!
本次比赛囊括众多面试中高级知识点,具体为 差分数组,单调队列,双指针,单调栈,拓扑排序,DAG 上 dp
ACM算法日常
2021/05/11
4560
类筛法与第一类斯特林数?这次的周赛有点东西!
分割字符串,把字符串和索引合成一个 pair<string, int>,放在容器 vector 里面进行排序,最后合成答案即可
ACM算法日常
2021/06/16
5850
我熬夜肝完周赛,为你整理出这份题解
本场比赛涵盖很多知识点,具体为 dfs,构造,双指针,set,单调队列,排列距离,逆序数
ACM算法日常
2021/05/11
4330
好想不好写,好写不好想,周赛压轴题到底难度几何?一起来盘一盘!
种排列情况,但是考虑第三个位置元素的值,最终就只有三种情况,即第三个位置分别放置
ACM算法日常
2021/06/16
4040
好想不好写,好写不好想,周赛压轴题到底难度几何?一起来盘一盘!
不愧是自动驾驶公司,周赛考大家基环树
本场周赛由 AutoX 联名,作为新年第一场力扣周赛,题目还挺有意思的,是个头脑风暴的好选择。
ACM算法日常
2022/01/06
5760
LeetCode周赛325,反向思考专场,你有逆向思维吗?
这一场赛题的质量不错,难度梯度非常好,很有层次。并且思维题居多,没有侧重某种算法或数据结构的考察。
TechFlow-承志
2023/03/02
7410
LeetCode周赛325,反向思考专场,你有逆向思维吗?
被迫隔离的周末,来个周赛解解乏
小编所在的社区因为疫情原因进行了 2 + 12 短期隔离,两天做了两遍鼻拭子和咽拭子的核酸检测,所幸都是阴性
ACM算法日常
2022/02/10
5810
1.1 5368. 找出数组中的幸运数(1394. Find Lucky Integer in an Array)
0. 前言 决定重新开始刷 LeetCode,这周参见了周赛 中文版地址:https://leetcode-cn.com/contest/weekly-contest-182/ 英文版地址:https://leetcode.com/contest/weekly-contest-182 1. 题解 1.1 5368. 找出数组中的幸运数(1394. Find Lucky Integer in an Array) 中文版题目描述:https://leetcode-cn.com/contest/weekly-c
西凉风雷
2022/11/23
2540
超超超高频面试题,快来混个脸熟(二)
这套题是某大厂为在校生举办的活动,据说是大厂高频面试原题,我代大家刷一刷,给大家伙混个脸熟
ACM算法日常
2021/09/28
4270
程序员进阶之算法练习(八十四)
题目链接 题目大意: 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):
落影
2023/09/03
1630
Leetcode 双周赛题解 40
给你一个字符串 sequence ,如果字符串 word 连续重复 k 次形成的字符串是 sequence 的一个子字符串,那么单词 word 的 「重复值为 k」 。单词 word 的 「最大重复值」 是单词 word 在 sequence 中最大的重复值。如果 word 不是 sequence 的子串,那么重复值 k 为 0 。
ACM算法日常
2020/12/15
3930
Leetcode 双周赛题解 40
LeetCode周赛255 状态压缩DP与集合问题
边奶娃边刷题,最后一题不会,所以本次周赛重点讲一下第三题,使用位压缩DP解组合问题。
ACM算法日常
2021/09/07
9990
01trie 在面试中的妙用
就是把整数的二进制表达式当作字符串,按照从高位到低位的顺序,挂载在字典树上,每个节点有两个孩子,分别是
ACM算法日常
2021/08/10
5660
01trie 在面试中的妙用
周赛不讲武德出博弈论,一起用动态规划赌一赌
他说对不起,说他是乱出的,他可不是乱出的啊,分明是有备而来,先是一个动态规划,再是一个二分答案,最后还搞个博弈论,这好吗?这不好!算法要以和为贵,不要搞窝里斗,谢谢朋友们!
ACM算法日常
2021/06/16
6200
周赛不讲武德出博弈论,一起用动态规划赌一赌
2024 CCF第一轮认证CSP-S提高组真题及解析
1. 在 Linux 系统中,如果你想显示当前工作目录的路径,应该使用哪个命令?( ) A pwd B cd C ls D echo 题解: A pwd:这个命令是“print working directory”的缩写,它的作用是显示当前工作目录的路径。 cd:这个命令是“change directory”的缩写,它的作用是切换当前工作目录。 ls:这个命令是“list”的缩写,它的作用是列出当前工作目录下的文件和文件夹。 echo:这个命令用于在终端输出指定的文本。
楚客追梦
2024/09/26
2880
2024 CCF第一轮认证CSP-S提高组真题及解析
程序员进阶之算法练习(八十九)leetcode
题目链接 题目大意: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。
落影
2023/11/02
1990
程序员进阶之算法练习(八十九)leetcode
Leetcode | 第B节:数组综合题(2)
抱歉这一节相对隔得时间长了一些再发出来,因为这几天基本上主要时间都在关注东京奥运会的比赛现场。在发表这篇文章的时候,也恰好知道名将苏炳添以9‘83’‘的时间晋级决赛,我认为他可以以这个成绩再拿一次金牌,希望我的预言成真2333
学弱猹
2021/08/06
4210
水水的周赛,水水的心情
实际上,我们是把所有的最大值全部变成次大值,再把次大值变为次次大值,循环往复,直到所有的值都变成最小值
ACM算法日常
2021/06/16
6400
水水的周赛,水水的心情
相关推荐
蔚来的题,偏思维,有点意思!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验