当前位置: 首页 > news >正文

算法奇妙屋(2)-模拟

文章目录

  • 一. 力扣6. Z 字形变换
    • 1. 题目
    • 2. 算法原理
    • 3. 代码
  • 二. 力扣38. 外观数列
    • 1. 题目
    • 2. 算法原理
    • 3. 代码
  • 三. 力扣495. 提莫攻击
    • 1. 题目
    • 2. 算法原理
    • 3. 代码
  • 四. 力扣1419. 数青蛙
    • 1. 题目
    • 2. 算法原理
    • 3. 代码1(暴力通俗易懂)
    • 4. 代码2(哈希映射)

一. 力扣6. Z 字形变换

1. 题目

在这里插入图片描述


2. 算法原理

在这里插入图片描述


3. 代码

    public String convert(String s, int numRows) {if (numRows == 1) {return s;}int len = s.length();int d = 2 * numRows - 2;StringBuffer ret = new StringBuffer();for (int i = 0; i < len; i += d) {ret.append(s.charAt(i));}for (int k = 1; k < numRows - 1; k++) {for (int i = k, j = d - i; i < len || j < len; i += d, j += d) {if (i < len) {ret.append(s.charAt(i));}if (j < len) {ret.append(s.charAt(j));}}}for (int i = numRows - 1; i < len; i += d) {ret.append(s.charAt(i));}return ret.toString();}

二. 力扣38. 外观数列

1. 题目

在这里插入图片描述


2. 算法原理

在这里插入图片描述


3. 代码

    public String countAndSay(int n) {String ret = "1";for (int i = 1; i < n; i++) {StringBuilder ss = new StringBuilder();int left = 0;int right = 0;int len = ret.length();while(left < len && right < len) {while(left < len && right < len && ret.charAt(right) == ret.charAt(left)) {right++;}ss.append(Integer.toString(right - left));ss.append(ret.charAt(left));left = right;}ret = ss.toString();}return ret;}

三. 力扣495. 提莫攻击

1. 题目

在这里插入图片描述


2. 算法原理

在这里插入图片描述


3. 代码

    public int findPoisonedDuration(int[] timeSeries, int duration) {int ret = 0;for (int i = 1; i < timeSeries.length; i++) {int tmp = timeSeries[i] - timeSeries[i - 1];if (tmp >= duration) {ret += duration;}else {ret += tmp;}}ret += duration;return ret;}

四. 力扣1419. 数青蛙

1. 题目

在这里插入图片描述


2. 算法原理

在这里插入图片描述


3. 代码1(暴力通俗易懂)

    public int minNumberOfFrogs(String croakOfFrogs) {int[] arr = new int[128];for (int i = 0; i < croakOfFrogs.length(); i++) {char ch = croakOfFrogs.charAt(i);if (ch == 'c') {if (arr['k'] == 0) {arr['c']++;}else {arr['k']--;arr['c']++;}}else if (ch == 'r') {if (arr['c'] != 0) {arr['c']--;arr['r']++;}else {return -1;}}else if (ch == 'o') {if (arr['r'] != 0) {arr['r']--;arr['o']++;}else {return -1;}}else if (ch == 'a') {if (arr['o'] != 0) {arr['o']--;arr['a']++;}else {return -1;}}else if (ch == 'k') {if (arr['a'] != 0) {arr['a']--;arr['k']++;}else {return -1;}}}if (arr['c'] != 0 || arr['r'] != 0 || arr['o'] != 0 || arr['a'] != 0) {return -1;}return arr['k'];}

4. 代码2(哈希映射)

    public int minNumberOfFrogs(String croakOfFrogs) {char[] c = croakOfFrogs.toCharArray();String s = "croak";int n = s.length();int[] hash = new int[n];HashMap<Character,Integer> map = new HashMap<>();for (int i = 0; i < n; i++) {map.put(s.charAt(i),i); // 哈希表中让哈希值key与下标value对应}for (char ch : c) {int index = map.get(ch);if (index == 0) {if (hash[n - 1] != 0) {hash[n - 1]--;}hash[index]++;}else {if (hash[index - 1] != 0) {hash[index - 1]--;hash[index]++;}else {return -1;}}}for (int i = 0; i < n - 1; i++) {if (hash[i] != 0) {return -1;}}return hash[n - 1];}

文章转载自:

http://zUlsp90t.qmkyp.cn
http://dCgkMhY4.qmkyp.cn
http://Ywar2kd2.qmkyp.cn
http://7qelH86S.qmkyp.cn
http://ZqVpfm62.qmkyp.cn
http://203hJLna.qmkyp.cn
http://iNBs5PfV.qmkyp.cn
http://Kz8SF8oO.qmkyp.cn
http://4tlR7x2n.qmkyp.cn
http://VxBHnbVj.qmkyp.cn
http://pFiELeAX.qmkyp.cn
http://SwCCsyUd.qmkyp.cn
http://Ex2Dlh10.qmkyp.cn
http://rwrmFbR1.qmkyp.cn
http://GucYOBQv.qmkyp.cn
http://mRcVKlHm.qmkyp.cn
http://YELsWANq.qmkyp.cn
http://FHheY34e.qmkyp.cn
http://ITpj0QMm.qmkyp.cn
http://xiauJjhe.qmkyp.cn
http://Bdu1gn3z.qmkyp.cn
http://XjaLTKEi.qmkyp.cn
http://0DMbejwJ.qmkyp.cn
http://HrKijvc1.qmkyp.cn
http://aWwAcI4y.qmkyp.cn
http://u2Bde5eE.qmkyp.cn
http://6ixwJZD8.qmkyp.cn
http://xPlWtLwf.qmkyp.cn
http://XlvwBmqU.qmkyp.cn
http://ybeOygLv.qmkyp.cn
http://www.dtcms.com/a/386263.html

相关文章:

  • 贪心算法应用:区间调度问题详解
  • js中异步编程的实现方式【详细】
  • 详解 ArduPilot:开源无人机自动驾驶系统的全方位解析
  • 分页查询:时间筛选+日期筛选+增加queryWrapper 筛选条件
  • 通透理清三级缓存--看Spring是如何解决循环依赖的
  • 【08】AI辅助编程完整的安卓二次商业实战-修改消息聊天框背景色-触发聊天让程序异常终止bug牵涉更多聊天消息发送优化处理-优雅草卓伊凡
  • 查看 Docker 守护进程日志
  • 第11章 [特殊字符]️Hutool 常用工具类
  • 【MySQL|第十篇】总结篇——各种命令集合
  • npm : 无法加载文件 d:\nvm4w\nodejs\npm.ps1,
  • 贪心算法应用:活动选择问题详解
  • C++ 模板:以简御繁-5/5
  • AI大模型学习(6)Yolo V8神经网络的基础应用
  • 【完整源码+数据集+部署教程】残疾人和正常人识别图像分割系统: yolov8-seg-act
  • 深度学习:从概念到实践,开启智能时代新篇章
  • 构建AI智能体:三十五、决策树的核心机制(一):刨根问底鸢尾花分类中的参数推理计算
  • 美创科技入选 2025 年度省级场景型数字化服务商!
  • 《COD21》新赛季海量更新:《忍者神龟》联动上线!
  • RuoYi框架Excel静态模板下载例子Demo
  • 【系列文章】Linux系统中断的应用02-中断下文 tasklet
  • GPT-5-Codex 模型评测报告
  • MAZANOKE+cpolar让照片存储无上限
  • (笔记)Linux系统设置虚拟内存
  • Kotlin-基础语法练习三
  • windows上Redis Desktop Manager链接服务器docker内Redis方法
  • jMeter小记-数组数据X_id集合获取及循环控制器使用调用数组数据X_id
  • 迁移指南:从旧版 Electron 升级
  • Node.js中的 http 模块详解
  • 设置powershell每次打开自动启动anaconda中自设环境
  • keil5和arm编译器安装