20201221:力扣220场周赛题解
力扣220场周赛
- 题目
- 思路与算法
- 代码实现
- 写在最后
题目
重新格式化电话号码
删除子数组的最大得分
跳跃游戏 VI
思路与算法
- 简单的string操作,用cpp或者java均可。
- 使用一个map来维护当前值出现的次数和当前值。判断值出现的次数大于1时重复,那么再维护指向第一个不重复的数字的索引即可。
- 滑动窗口dp即可,注意不剪枝会TLE,详细见注释
代码实现
- 重新格式化电话号码
class Solution {public:string reformatNumber(string number) {// ans 用来返回,buf 用来把原来数据中的数字保存string ans, buf;// 对所有数字保存下来for (char c : number) if (c != ' ' && c != '-') buf.push_back(c);// 对缓冲区中的数据进行挨个分组处理for (int i = 0; i < buf.size(); ++i) {// 如果遇到分割边界,而且不是开头和末尾的特殊情况,那么就直接拼接分隔符 -if (i != 0 && i % 3 == 0 && buf.size() - i > 1) {ans.push_back('-');} else if (i != 0 && i % 3 == 0 && i == buf.size() - 1) {// 否则就修改最后的两组数据char c = ans.back();ans.pop_back();ans.push_back('-');ans.push_back(c);}ans.push_back(buf[i]);}return ans;}
};
- 删除子数组的最大得分
class Solution {public:int maximumUniqueSubarray(vector<int>& nums) {unordered_map<int,int> map;int n = nums.size();int res = 0, s = 0;for(int i = 0, j = 0; i < n; i++){map[nums[i]]++;s += nums[i];while(map[nums[i]] > 1){map[nums[j]]--;s -= nums[j];j++;}res = max(res, s);}return res;}
};
- 跳跃游戏 VI
class Solution {public int maxResult(int[] nums, int k) {int len = nums.length;int[] dp = new int[len];// dp数组初始化for (int i = 0; i < len; i++) {dp[i] = Integer.MIN_VALUE;}// dp[x]表示以索引x为终点的最大得分。那么能一跳到达x的索引范围为[x-k,x-1]。dp[0] = nums[0];// 遍历从i到i可以一跳到达的落点j,j的索引范围为[i+1,i+k],for (int i = 0; i < len; i++) {for (int j = i + 1; (j <= i + k) && (j < len); j++) {// 如果比j位置当前最大得分大, 则更新j位置最大得分dp[j] = Math.max(dp[i] + nums[j],dp[j]);// 剪枝:如果上式更新后的dp[j]比dp[i]大,也就是可以获取得分提升,因此直接跳出即可完成优化通过本题。if (dp[j] >= dp[i]) {break;}}}return dp[len - 1];}
}
写在最后
- 第4题写不出来,日常卡第四题。立个flag,202年1月份之内补上此类的数据结构空缺
20201221:力扣220场周赛题解相关推荐
- 20201219:力扣219周周赛题解
力扣219周周赛题解 题目 思路与算法 代码实现 复杂度分析 题目 比赛中的配对次数 十-二进制数的最少数目 石子游戏 VII 堆叠长方体的最大高度 思路与算法 比赛中的配对次数 两两比赛,淘汰剩一支 ...
- 20201008:力扣209周周赛题解(下)
力扣209周周赛题解(下) 题目 思路与算法 代码实现 写在最后 题目 可见点的最大数目 使整数变为 0 的最少操作次数 思路与算法 第一题注意添加角度时atan2的范围是正负π,因此注意差值可能超出 ...
- 20201007:力扣209周周赛题解记录(上)
力扣209周周赛题解记录(上) 题目 思路与算法 代码实现 复杂度分析 题目 特殊数组的特征值 奇偶树 思路与算法 第一题单纯的暴力就行,应该是可以用二分之类的改善复杂度,没必要赘述,直接上暴力遍历, ...
- (补)20200911:力扣204周周赛题解下
力扣204周周赛题解下 题目 思路与算法 代码实现 写在最后 题目 3.1568. 使陆地分离的最少天数 思路与算法 本周周赛第三题勉强可以看看,第四题超出我目前的水平,跳过.第三题是一个典型的dfs ...
- 20200910:力扣204周周赛题解上(Java/Python/Cpp)
力扣204周周赛题解上 题目 思路与算法 代码实现 写在最后 题目 1.1566. 重复至少 K 次且长度为 M 的模式 2.1567. 乘积为正数的最长子数组长度 思路与算法 热身题不要求算法技巧, ...
- 20200907:力扣203周周赛题解记录
力扣203周周赛题解 题目一: 1.圆形赛道上经过次数最多的扇区 示例 解题思路与代码实现 本题的思路为优化整个起点与终点,理清关系,起点到终点的过程中,分为起点小于终点,起点大于终点,起点等于终点, ...
- 20200819:力扣202周周赛题解记录
力扣202周周赛题解记录 题目一:[存在连续三个奇数的数组](https://leetcode-cn.com/problems/three-consecutive-odds/) 代码实现 题目二:[使 ...
- 20200815:力扣201周周赛题解记录下
力扣201周周赛题解记录下 题目 思路与算法 代码实现 题目 和为目标值的最大数目不重叠非空子数组数目 1547. 切棍子的最小成本 在这里插入图片描述 思路与算法 第3题还是一个简单的模拟,用set ...
- 20200814:力扣201周周赛题解记录上
力扣201周周赛题解记录上 题目 思路与算法 代码实现 写在最后 题目 整理字符串 找出第 N 个二进制字符串中的第 K 位 思路与算法 第一题这种类似消消乐的东西都是直接用栈来实现的,注意代码细节 ...
最新文章
- libgdx游戏引擎开发笔记(一)引擎介绍和Helloworld
- 云原生应用万节点分钟级分发协同实践
- 8086汇编-实验3-编程、编译、链接、跟踪
- 如何设置wiki权限
- 2018 ACM ICPC Asia Regional - Seoul B.Cosmetic Survey
- 微处理器硬件喂狗_硬件基础:微控制器到底是什么?
- Mysql_mysql多个TimeStamp设置
- 如何正确上传一张图片?
- DXUT框架剖析(10)
- ASP.NET的七个内置对象
- Linux 应急响应:入侵排查就应该这么做
- redis下载安装教程(详细步骤)
- [转]用python来开发webgame服务端(2)
- python关键字匹配_python正则表达式同时匹配多个关键字(多关键字匹配)
- 用20 ETH的成本撬动3000万美元收益——Harvest攻击全复盘
- springboot+教学工作量管理系统 毕业设计-附源码221541
- Tensorflow Saver
- 理解C语言中的a++、a--和++a、--a
- 这几道Python面试题,稳准狠,Python面试题No15
- ICMP拒绝服务攻击(原始套接字系列四)
热门文章
- 马云、马化腾任职清华;微软将数据保存在玻璃中;Visual Studio Online 上线 | 极客头条...
- 何为量子计算机? | CSDN 博文精选
- 用Scala实现简单的Web和API服务器
- 智能时代“云”主沉浮
- 一文了解 2018 年最值得关注的 12 大框架
- 俄罗斯 90 后天才写 5 年代码创收 1000 亿美金
- 谁说 Java 要过时?2017 年 Java 大事件回顾!
- 计算机教学怎么为护士服务卫校,【计算机教学论文】中专卫生学校计算机教学论文(共1480字)...
- 2008服务器网站设置密码,win2008服务器设置密码
- 在sql server中用正则表达式替换html标签,SQL Server中利用正则表达式替换字符串