力扣203周周赛题解

题目一:

1.圆形赛道上经过次数最多的扇区

示例

解题思路与代码实现

本题的思路为优化整个起点与终点,理清关系,起点到终点的过程中,分为起点小于终点,起点大于终点,起点等于终点,分为三种情况,中间重复的部分的次数都是相同的。注意起点大于终点的情况就可以了。具体见代码。简单的题型用python更加简单,复杂的题型用Java和cpp更加清晰易懂。

class Solution:def mostVisited(self, n: int, rounds: List[int]) -> List[int]:start,end = rounds[0],rounds[-1]# 三种情况依次来写即可if start < end :return list(range(start,end+1));elif start == end :return list(range(start,start+1))else :return list(range(1,end+1)) + list(range(start,n+1))

题目二:

2.你可以获得的最大硬币数目

示例

解题思路与代码实现

纯排序题,拍完序按照顺序进行取值即可

python实现:

class Solution:def maxCoins(self, piles: List[int]) -> int:# python提供的更加简洁的表达格式,注意与matlab中区间及给定步长使用的区分return sum(sorted(piles)[len(piles) // 3::2])

不太熟悉python的同学看cpp代码实现:

class Solution {
public:int maxCoins(vector<int>& piles) {int ans = 0;sort(piles.begin(),piles.end());int len = piles.size();for(int i = len / 3; i < len; i = i + 2){ans += piles[i];}return ans;}
};

题目三:

3.查找大小为 M 的最新分组

示例

解题思路与代码实现

注意理解题意,并进行分段处理即可,分为三种情况,插入之后新增一个段长为1的段,或者原有段长数量减一,原有段长加一段增加一,或者原有两个段减一,新增一个大段。分类来写即可。

class Solution {public int findLatestStep(int[] arr, int m) {int[] link = new int[arr.length + 2];int cnt = 0;int res = -1;for (int i = 0; i < arr.length; i++) {int x = arr[i];int l = link[x - 1] != 0 ? link[x - 1] : x;int r = link[x + 1] != 0 ? link[x + 1] : x;if (x - l == m) {cnt--;}if (r - x == m) {cnt--;}if (r - l + 1 == m) {cnt++;}if (cnt > 0) {res = i + 1;}link[l] = r;link[r] = l;}return res;}
}

题目四:

4.石子游戏 V

示例

解题思路与代码实现

前缀和以及动态规划的进阶题目,石子游戏的前面几道题理解到位的话本题应该问题不大,注意状态转移方程的给定。

class Solution {public int stoneGameV(int[] stoneValue) {int N = stoneValue.length;int[][] dp = new int[N][N];// 前缀和优化int[] preSum= new int[N];preSum[0]=stoneValue[0];for (int i = 1; i < stoneValue.length; i++) {preSum[i] =preSum[i-1]+stoneValue[i];}// dp即可for (int len = 2; len <=N ; len++) {for (int i = 0; i+len-1 <N ; i++) {int j = i+len-1;for (int m = i; m <=j ; m++) {if (i>m || m+1>j){continue;}int l = dp[i][m];   int r = dp[m+1][j]; int ls =  preSum[m] - (i>0? preSum[i-1]:0); // i ~ m 分数int rs = preSum[j]- preSum[m]; //m+1 ~ j 分数//左右区间分数相同,取大的if (ls == rs){int score = Math.max(l,r)+ls;dp[i][j] = Math.max(dp[i][j],score);}// 左右不等,取小的else{if (ls>rs){dp[i][j] = Math.max(dp[i][j],r+rs);}else{dp[i][j] = Math.max(dp[i][j],l+ls);}}}}}return dp[0][N-1];}
}

20200907:力扣203周周赛题解记录相关推荐

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

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

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

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

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

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

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

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

  5. 20200729:力扣199周周赛题解(下)

    力扣199周周赛题解(下) 题目三:好叶子节点对的数量 给你二叉树的根节点 root 和一个整数 distance . 如果二叉树中两个叶节点之间的 最短路径长度 小于或者等于 distance ,那 ...

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

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

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

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

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

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

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

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

最新文章

  1. 关于node.js的误会
  2. LeetCode 52. N皇后 II
  3. 北京大学孙俊教授课题组深度视频研究室招收2021级博士生
  4. mysql 事务 注意 优化_MySQL入门详解——事务、锁、优化
  5. Thinkphp ajax分页
  6. 解决git pull 报错insufficient permission for adding an object to repository database .git/objects
  7. android phone win10下载,微软Your Phone新功能: 可在Win 10 PC 上运行 Android 应用程序...
  8. html 动画过度转换的用法,css(动画,过渡,转换)
  9. 20191111每日一句
  10. Ubuntu Linux DNS服务器 BIND9配置文件命令介绍
  11. 前馈神经网络初步了解
  12. MATLAB app designer/GUI 学习笔记(一)
  13. 设计模式 -- 状态模式
  14. 5G NR无线空口关键技术专题培训
  15. Linux c使用gumbo库解析页面表单信息(二)
  16. ABAP新建session会话的函数_SAP刘梦_新浪博客
  17. Master in Vocab -- Day Four
  18. 盘点:35 个 Java 代码优化魔鬼细节
  19. 针对Chrome浏览器无法使用Flash的问题
  20. 网络上流行的关于“剩男/剩女”的许多调侃

热门文章

  1. 小辣椒手机创始人王晓雁加入小米;手机 QQ 可显示对方实时电量;Git Extensions 3.3.1 发布 | 极客头条...
  2. 开源操作系统年度盛会最新日程曝光,邀您一同开启烧脑模式!
  3. 程序员的代码写的再牛也没有马伊琍文章的分手语牛!
  4. IT 从业者要如何在国企「活」下去?
  5. 如何使用 Lucene 做网站高亮搜索功能?
  6. iOS 12 真的能让旧款 iPhone 速度飞起吗?
  7. 黄渤《一出好戏》首日票房 1.5 亿,口碑碾压《爱情公寓》凭的是什么?
  8. 网易云音乐与腾讯闹掰;今日头条下架万条短视频;美团打车或将被吊证| CSDN 极客头条
  9. 为什么量子计算会对我们产生威胁?
  10. 那些坑爹的老代码,究竟改还是不改?!