力扣220场周赛

  • 题目
  • 思路与算法
  • 代码实现
  • 写在最后

题目

  1. 重新格式化电话号码

  2. 删除子数组的最大得分

  3. 跳跃游戏 VI

思路与算法

  1. 简单的string操作,用cpp或者java均可。
  2. 使用一个map来维护当前值出现的次数和当前值。判断值出现的次数大于1时重复,那么再维护指向第一个不重复的数字的索引即可。
  3. 滑动窗口dp即可,注意不剪枝会TLE,详细见注释

代码实现

  1. 重新格式化电话号码
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;}
};
  1. 删除子数组的最大得分
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;}
};
  1. 跳跃游戏 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];}
}

写在最后

  1. 第4题写不出来,日常卡第四题。立个flag,202年1月份之内补上此类的数据结构空缺

20201221:力扣220场周赛题解相关推荐

  1. 20201219:力扣219周周赛题解

    力扣219周周赛题解 题目 思路与算法 代码实现 复杂度分析 题目 比赛中的配对次数 十-二进制数的最少数目 石子游戏 VII 堆叠长方体的最大高度 思路与算法 比赛中的配对次数 两两比赛,淘汰剩一支 ...

  2. 20201008:力扣209周周赛题解(下)

    力扣209周周赛题解(下) 题目 思路与算法 代码实现 写在最后 题目 可见点的最大数目 使整数变为 0 的最少操作次数 思路与算法 第一题注意添加角度时atan2的范围是正负π,因此注意差值可能超出 ...

  3. 20201007:力扣209周周赛题解记录(上)

    力扣209周周赛题解记录(上) 题目 思路与算法 代码实现 复杂度分析 题目 特殊数组的特征值 奇偶树 思路与算法 第一题单纯的暴力就行,应该是可以用二分之类的改善复杂度,没必要赘述,直接上暴力遍历, ...

  4. (补)20200911:力扣204周周赛题解下

    力扣204周周赛题解下 题目 思路与算法 代码实现 写在最后 题目 3.1568. 使陆地分离的最少天数 思路与算法 本周周赛第三题勉强可以看看,第四题超出我目前的水平,跳过.第三题是一个典型的dfs ...

  5. 20200910:力扣204周周赛题解上(Java/Python/Cpp)

    力扣204周周赛题解上 题目 思路与算法 代码实现 写在最后 题目 1.1566. 重复至少 K 次且长度为 M 的模式 2.1567. 乘积为正数的最长子数组长度 思路与算法 热身题不要求算法技巧, ...

  6. 20200907:力扣203周周赛题解记录

    力扣203周周赛题解 题目一: 1.圆形赛道上经过次数最多的扇区 示例 解题思路与代码实现 本题的思路为优化整个起点与终点,理清关系,起点到终点的过程中,分为起点小于终点,起点大于终点,起点等于终点, ...

  7. 20200819:力扣202周周赛题解记录

    力扣202周周赛题解记录 题目一:[存在连续三个奇数的数组](https://leetcode-cn.com/problems/three-consecutive-odds/) 代码实现 题目二:[使 ...

  8. 20200815:力扣201周周赛题解记录下

    力扣201周周赛题解记录下 题目 思路与算法 代码实现 题目 和为目标值的最大数目不重叠非空子数组数目 1547. 切棍子的最小成本 在这里插入图片描述 思路与算法 第3题还是一个简单的模拟,用set ...

  9. 20200814:力扣201周周赛题解记录上

    力扣201周周赛题解记录上 题目 思路与算法 代码实现 写在最后 题目 整理字符串 找出第 N 个二进制字符串中的第 K 位 思路与算法 第一题这种类似消消乐的东西都是直接用栈来实现的,注意代码细节 ...

最新文章

  1. libgdx游戏引擎开发笔记(一)引擎介绍和Helloworld
  2. 云原生应用万节点分钟级分发协同实践
  3. 8086汇编-实验3-编程、编译、链接、跟踪
  4. 如何设置wiki权限
  5. 2018 ACM ICPC Asia Regional - Seoul B.Cosmetic Survey
  6. 微处理器硬件喂狗_硬件基础:微控制器到底是什么?
  7. Mysql_mysql多个TimeStamp设置
  8. 如何正确上传一张图片?
  9. DXUT框架剖析(10)
  10. ASP.NET的七个内置对象
  11. Linux 应急响应:入侵排查就应该这么做
  12. redis下载安装教程(详细步骤)
  13. [转]用python来开发webgame服务端(2)
  14. python关键字匹配_python正则表达式同时匹配多个关键字(多关键字匹配)
  15. 用20 ETH的成本撬动3000万美元收益——Harvest攻击全复盘
  16. springboot+教学工作量管理系统 毕业设计-附源码221541
  17. Tensorflow Saver
  18. 理解C语言中的a++、a--和++a、--a
  19. 这几道Python面试题,稳准狠,Python面试题No15
  20. ICMP拒绝服务攻击(原始套接字系列四)

热门文章

  1. 马云、马化腾任职清华;微软将数据保存在玻璃中;Visual Studio Online 上线 | 极客头条...
  2. 何为量子计算机? | CSDN 博文精选
  3. 用Scala实现简单的Web和API服务器
  4. 智能时代“云”主沉浮
  5. 一文了解 2018 年最值得关注的 12 大框架
  6. 俄罗斯 90 后天才写 5 年代码创收 1000 亿美金
  7. 谁说 Java 要过时?2017 年 Java 大事件回顾!
  8. 计算机教学怎么为护士服务卫校,【计算机教学论文】中专卫生学校计算机教学论文(共1480字)...
  9. 2008服务器网站设置密码,win2008服务器设置密码
  10. 在sql server中用正则表达式替换html标签,SQL Server中利用正则表达式替换字符串