力扣185周周赛下

  • 题目
  • 思路与算法
  • 代码实现

题目

  1. 数青蛙

  2. 生成数组

思路与算法

  1. 数青蛙:本题考查一个模拟过程,把青蛙的叫声设计出croak五个过程,必须同时出现这5个,才是一个青蛙的叫声,否则返回-1。一开始想统计croak各自的数量,但是这题要求输出的是青蛙的数量。这样明显不行。举例2说明:这两只青蛙是可以同时开始叫的,或者在一只没叫完的时候就开始叫,一只结束之后再开始的话,视作同一只青蛙,仔细分析得:k为一个青蛙叫完的标志,且croak的顺序不能错,必须从c到k,因此我们遍历统计croak各自的数量即可,具体细节见代码。

  2. 生成数组:举例1说明,n=2,m=3,k=1.

       ①.该数组有2个元素②.该数组的元素取值范围[1,3]③.找到该数组的最大值搜索损耗为1,(从第一个元素开始搜索,需要1次就找到最大值,意味着数组的首字母为当前数组的最大值)
    

    读懂题目之后,基本不用再多想了,肯定是动态规划的范畴,只不过本题是一个三维动态,dp[i][j][p]:表示前i个元素最大值为j的情况下,搜索损耗为p,那么再将其分为两类,

    ①在这前i个元素中,第i个为最大值j,那么dp[i][j][p] = dp[i-1][x][p-1],其中x为1到j-1,每一种情况都加起来。
    ②最大值在第1-第j-1个元素中,则最后一个元素可以为1-j的任意情况,dp[i][j][p] = j * dp[i-1][j][p];
    据此来写出代码即可。记得结果对1000000007取模
    

代码实现

  1. 数青蛙
class Solution {public int minNumberOfFrogs(String croakOfFrogs) {int res = 0;int c = 0;int r = 0;int o = 0;int a = 0;int k = 0;char[] frogs = croakOfFrogs.toCharArray();for (char i : frogs) {if (i == 'c') {c++;// 如果此时k不为0,说明有一个青蛙叫完了,则k--,意味          着不需要新的青蛙,刚刚叫完的上班即可。反之则需要新的青蛙,更新res即可。if (k > 0) {k--;} else {res++;}} else if (i == 'r') {r++;c--;} else if (i == 'o') {o++;r--;} else if (i == 'a') {a++;o--;} else if (i == 'k') {k++;a--;}// croa出现小于0的情况,则说明顺序不对,跳出循环if (c < 0 || r < 0 || o < 0 || a < 0) {break;}}// 最终如果都是croak成对出现,则croa一定为0,不为0,则返回-1,否则返回resif (c != 0 || r != 0 || o != 0 || a != 0) {return -1;}return res;}
}
  1. 生成数组
class Solution {public int numOfArrays(int n, int m, int k) {final int MOD = (int)1e9 + 7;long[][][] dp = new long[n + 1][m + 1][k + 1];for (int i = 1; i < m + 1; i++) {for (int j = 1; j < k + 1; j++) {if (j > 1) {dp[1][i][j] = 0;} else {dp[1][i][j] = 1;}}}for (int i = 1; i < n + 1; i++) {for (int j = 1; j < k + 1; j++) {if (j == 1) {dp[i][1][j] = 1;} else {dp[i][1][j] = 0;}}}for (int i = 2; i < n + 1; i++) {for (int j = 2; j < m + 1; j++) {for (int a = 1; a < k + 1; a++) {for (int b = 1; b < j; b++) {dp[i][j][a] += dp[i - 1][b][a - 1];dp[i][j][a] %= MOD;}dp[i][j][a] += j * dp[i - 1][j][a];dp[i][j][a] %= MOD;}}}int res = 0;for (int i = 1; i < m + 1; i++) {res += dp[n][i][k];res %= MOD;}return res;}
}

20200502:力扣185周周赛下相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 20200701:力扣194周周赛上

    力扣194周周赛上 题目 思路与算法 代码实现 复杂度分析 题目 数组异或操作 保证文件名唯一 注意这个示例: 思路与算法 半个月没写博客了,太懒了,不能再拖延了,今天开始全部带上C++和Java的双 ...

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

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

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

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

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

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

最新文章

  1. [深入理解Android卷一全文-第九章]深入理解Vold和Rild
  2. 李开复预测:未来20年 AI将深刻影响五大产业
  3. django写项目的详细步骤
  4. python图像边缘检测_python opencv实现图像边缘检测
  5. Cropper – 简单的 jQuery 图片裁剪插件
  6. 【C++深度剖析教程29】C++对象模型分析下
  7. HTML作业-花店网页商城
  8. 计算机网络之应用层:1、概述
  9. AutoLayout 的一些坑
  10. 在Xcode编译的时候,报这个错误"library not found for -
  11. 钢构件建筑材料英国UKCA认证—EN 13381-4
  12. JAVA链表中的回文链表结构
  13. TCPreplay libdnet安装失败情况下安装/tcpreplay yum install 方式安装
  14. python跳转下一页_用Beautifulsoup转到下一页
  15. 《Java并发编程的艺术》读书笔记三
  16. icns文件_感染phobos家族勒索病毒文件后缀.phobos如何应对处理?
  17. 现在公司都不缺人了?软件测试工作经历3年,面试居然被坑了....
  18. 自定义View之网易云音乐听歌识曲水波纹动画
  19. 关于Office 365 显示语言的设置(注册开通时的语言选择及注册开通后的语言显示修改)
  20. TX2配置RealSense D455相机SDK和ros驱动

热门文章

  1. 如何伪装成一个彻头彻尾的程序员?
  2. 程序员必知的 20 个 Python 技巧!
  3. 腾讯基础设施 20 年演进之路
  4. 被窃听、被定位:“裸奔时代”还有隐私吗?
  5. 程序员面试被问到“三次握手,四次挥手”怎么办?
  6. 除了敲代码,程序员还能有什么副业?
  7. 生物学家、钢管舞、全栈工程师,女程序员如何活得漂亮
  8. 百度、支付宝、今日头条先后被约谈,下一个会是谁?
  9. 计算机丢失用户名,问下经验人士电脑用户名丢失怎么办
  10. 学JAVA的为什么_为什么学习Java的人越来越多