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

算法练习- 其他算法练习6

文章目录

  • 数字序列比大小
  • 最佳植树距离
  • 文艺汇演
  • 计算误码率
  • 二维伞的雨滴效应
  • 阿里巴巴找黄金宝箱4

数字序列比大小

  • A、B两人一人一个整数数组,长度相等,元素随即;
  • 两人随便拿出一个元素(弹出),比较大小,赢的得一分,输的减去一分,否则分值都不变;
  • B每取一个元素都明示,求A赢B时的最大分值;

输入:
n 数组长度
arr1
arr2
输出:
求A赢B时的最大分值

示例1
输入:
3
4 8 10
3 6 4
输出:
3

示例2
输入:
4
3 6 2 10
2 5 7 11
输出:
3

思路:

  • 对两个数组排序,并使用一个flag表示A 有能赢B 的元素;
  • arr_b弹出第一个值,arr_a中取能赢arr_b的最小值;
  • score_a 累加1;
  • 示例可以找arr_a排序后元素全小于arr_b;全大于arr_b;有大于有小于arr_b;

python:

n = int(input().strip())
arr_a = list(map(int, input().strip().split()))
arr_b = list(map(int, input().strip().split()))
arr_a.sort()
arr_b.sort()score_a = score_b = 0flag = True # 表示A能赢B
while flag and arr_b:flag = Falsee_b = arr_b.pop(0)i = 0# 取保证A赢的最小元素while i < len(arr_a) and arr_a[i] <= e_b: # 只有大于才算赢i += 1if i < len(arr_a):flag = Truearr_a.pop(i)score_a += 1score_b -= 1print(score_a)

 

最佳植树距离

  • 给定一些适合种树的坐标点和树苗数量;
  • 让树苗均匀分开,确定最佳的种树距离;

示例1
输入:
7 坐标的数量
1 5 3 6 10 7 13 坐标
3 树苗数量
输出:
6 最佳的植树距离

思路:

  • coords坐标数组升序排序;
  • 植树距离最小为1,最大max_dist为【最大坐标-最小坐标】;
  • for dist in range(1, max_dist+1);
    • for i in range(coords[0], coords[-1]+1, dist):
    • used_trees += 1 并且保存植树的坐标位置
  • used_tree > has_tree continue;
  • used_tree == has_tree 判断是否合法坐标;
  • used_tree < has_tree 距离太大 break

python:


coord_n = int(input().strip())
coords = list(map(int, input().strip().split()))
coords.sort()
trees_m = int(input().strip())find_best_dist = Falsemax_dist = coords[-1] - coords[0]
dist = 1
for dist in range(1, max_dist+1):used_trees = 0pos_list = []for i in range(coords[0], coords[-1] + 1, dist):used_trees += 1pos_list.append(i)if used_trees > trees_m: # 说明当前间距太小continueelif used_trees == trees_m:# 如果当前位置都是有效位置,且以均匀种植完所有的树苗,则breakif all([True if i in coords else False for i in pos_list]):find_best_dist = Truebreakelse:breakif find_best_dist:print(dist)
else:print(-1)

 

文艺汇演

  • 一个人只能观看一场演出,不能迟到、早退;
  • 连续观看的演出至少有15分钟的间隔;
  • 根据时间表,计算最多可以看几场演出;

示例1
输入:
2 演出场数
720 120 开始时间-持续时间
840 120 开始时间-持续时间
输出:
1

示例2
输入:
5
20 120
80 120
130 70
140 60
200 50
输出:
2

示例3
输入:
4
20 200
30 30
50 45
110 60
输出:
2

思路:

  • 动态规划
  • 所有场次按照开始时间升序排序
  • 后一场的开始时间与前一场的结束时间比较,是否有15分钟的间隔;
    • 有则可以看,取后面这一场的结束时间,作为后续比较;
    • 间隔不足,则选择看结束时间最早的那一场,刷新结束时间;

python:


def calc_max_plays(arr):global n, can_see_numif n == 1: # 场次是>=1return# 结束时间end_time = arr[0][0] + arr[0][1]cur = 1while cur < n:if arr[cur][0] - end_time >= 15:# 可以看 则刷新结束时间can_see_num += 1end_time = arr[cur][0] + arr[cur][1]else:# 选择场次(最早结束的场次)end_time = min(end_time, arr[cur][0] + arr[cur][1])cur += 1returnif __name__ == '__main__':# 所有场次数n = int(input().strip())plays = []for i in range(n):start_last = list(map(int, input().strip().split()))plays.append(start_last)# 按照开始时间排序plays = sorted(plays, key=lambda i:i[0])print(plays)can_see_num = 1# 计算最多场次calc_max_plays(plays)print(can_see_num)

 

计算误码率

  • 误码率 = 错误比特数 / 总比特数;以字符串表示总位数,错误字符数,即为错误比特数;
  • 字符串会被压缩,如2A3B4D5X 表示“AABBBDDDDXXXXX”;
  • 第一次输入原始的压缩字符串,第二次输入出错的压缩字符串;
  • 解压后两个字符串长度相等,计算误码率;

示例1
输入:
3A3B
2A4B
输出:
1/6

示例2
输入:
5Y5Z
5Y5Z
输出:
0/10

示例3
输入:
4Y5Z
9Y
输出:
5/9

思路:

  • 还原字符串,并逐一对比,统计所有字符个数和错误字符个数;
  • 输出误码率比例;

python:


s1 = "5Y5Z"
s2 = "5Y5Z"s1_restore = ""
s2_restore = ""s1_char_num = 0
for i in s1:if i.isdigit():s1_char_num = int(i)else:s1_restore += i * s1_char_nums2_char_num = 0
for i in s2:if i.isdigit():s2_char_num = int(i)else:s2_restore += i * s2_char_num# 两者恢复后长度相等
n = len(s1_restore)
error_num = 0
for i in range(n):if s1_restore[i] != s2_restore[i]:error_num += 1print(f"{error_num}/{n}")

 

二维伞的雨滴效应

  • 输入一个正整数数组,无0,无重复,数组最小长度为1;
  • 判断是否为二叉排序树,是则输出1,并输出左右子树的叶子节点值;
  • 不是二叉排序树,则输出0 0 0,中间空格分隔;

示例:
输入:
8 3 1 6 4 7 10 14 13
输出:
1 1 13

思路:

  • 构造二叉搜索树,前序遍历结果与数组对比,一致则数组为二叉搜索树的前序遍历结果;
  • 前序遍历,最后一个数是最右侧叶子节点;
  • 中序遍历,第一个节点为最左侧叶子节点;

python:

class TreeNode(object):def __init__(self, data, left=None, right=None):self.data = dataself.left = leftself.right = right# 构造二叉排序树
def insert_node(root, val):if root is None:return TreeNode(val)if val > root.data:# 右边插入root.right = insert_node(root.right, val)else:root.left = insert_node(root.left, val)return root# 中序遍历
# 左子树、root、右子树if __name__ == '__main__':# 构造二叉树排序树alist = [8, 3, 1, 6, 4, 7, 10, 14, 13]root = Nonefor i in alist:root = insert_node(root, i)root2 = rootin_order_list = []# 中序遍历stack = []while root or stack:while root:in_order_list.append(root.data)# 根节点入栈stack.append(root)root = root.leftroot = stack.pop()root = root.rightoutput_list = []if alist == in_order_list:output_list.append(1)# 中序遍历  获取最左侧的叶子节点pre = Nonewhile root2:pre = root2root2 = root2.leftoutput_list.append(pre.data if pre.right is None else 0)# 前序获取最右边叶子节点output_list.append(in_order_list[-1])else:output_list = [0, 0, 0]print(output_list)

 

阿里巴巴找黄金宝箱4

  • 有0-N个箱子排成一个环,每个箱子有自己对应的编号;
  • 输出每一个箱子后第一个比自己编号大的数;
  • 多个数以,分隔输出;

示例1:
输入:
2,5,2
输出
5,-1,5

示例2:
输入:
3,4,5,6,3
输出
4,5,6,-1,4

思路:

  • 单调栈,从栈顶到栈底,递增为单调递增栈;否则为单调递减栈;
  • 单调栈解决大小关系;

python:


相关文章:

算法练习- 其他算法练习6

文章目录 数字序列比大小最佳植树距离文艺汇演计算误码率二维伞的雨滴效应阿里巴巴找黄金宝箱4 数字序列比大小 A、B两人一人一个整数数组&#xff0c;长度相等&#xff0c;元素随即&#xff1b;两人随便拿出一个元素&#xff08;弹出&#xff09;&#xff0c;比较大小&#x…...

ModaHub魔搭社区:WinPlan经营大脑管理中心

角色权限 展示设置的角色,及对应的成员及权限点。角色、成员、权限点可自由配置;管理员的角色不可删除、权限点默认全部不可更改。 WinPlan决策系统 算力 阿里云 腾讯云 AWS亚马逊 框架 业务数据基座 WinPlan垂直大模型 模型 分...

滑动窗口系列4-Leetcode322题零钱兑换-限制张数-暴力递归到动态规划再到滑动窗口

这个题目是Leecode322的变种&#xff0c;322原题如下&#xff1a; 我们这里的变化是把硬币变成可以重复的&#xff0c;并且只有coins数组中给出的这么多的金币&#xff0c;也就是说有数量限制&#xff1a; package dataStructure.leecode.practice;import java.util.Arrays; i…...

Nginx全局配置

一、修改启动进程数 worker_processes 1; #允许的启动工作进程数数量&#xff0c;和你真实的cpu数量有关 1 worker_processes auto; #如果设置为auto 就是你真实的cpu数量 ps axo pid,cmd,psr,ni|grep nginx #可以看到 nginx的 worker数量 二、日制分割 [rootyuji ~]#…...

VUE笔记(四)vue的组件

一、组件的介绍 1、组件的作用 整个项目都是由组件组成 可以让代码复用&#xff1a;相似结构代码可以做成一个组件&#xff0c;直接进行调用就可以使用&#xff0c;提高代码复用性 可以让代码具有可维护性&#xff08;只要改一处&#xff0c;整个引用的部分全部都变&#xf…...

菜鸟教程《Python 3 教程》笔记

菜鸟教程《Python 3 教程》笔记 0 写在前面1 基本数据类型1.1 Number&#xff08;数字&#xff09;1.2 String&#xff08;字符串&#xff09;1.3 bool&#xff08;布尔类型&#xff09;1.4 List&#xff08;列表&#xff09;1.5 Tuple&#xff08;元组&#xff09;1.6 Set&…...

JAVA学习-愚见

JAVA学习-愚见 分享一下Java的学习路线&#xff0c;仅供参考【本人亲测&#xff0c;真实有效】 1、尽可能推荐较新的课程 2、大部分视频在B站上直接搜关键词就行【自学&#xff0c;B大的学生】 文章目录 JAVA学习-愚见前期准备Java基础课程练手项目 数据库JavaWeb前端基础 Vue…...

Watch数据监听详解

一、Vue2写法 1、watch使用的几种方法 1、通过 watch 监听 data 数据的变化&#xff0c;数据发生变化时&#xff0c;就会打印当前的值 watch: {data(val, value) {console.log(val)console.log(value)}} 2、通过 watch 监听 list 数据的变化&#xff0c;数据发生变化时&…...

UML建模以及几种类图的理解

文章目录 前言1.用例与用例图1.1 参与者1.2 用例之间的关系1.3 用例图1.4 用例的描述 2.交互图2.1 顺序图2.2 协作图 3.类图和对象图3.1 关联关系3.2 聚合和组合3.3 泛化关系3.4 依赖关系 4.状态图与活动图4.1 状态图4.2 活动图 5.构件图 前言 UML通过图形化的表示机制从多个侧…...

opencv进阶18-基于opencv 决策树导论

1. 什么是决策树&#xff1f; 决策树是最早的机器学习算法之一&#xff0c;起源于对人类某些决策过程 的模仿&#xff0c;属于监督学习算法。 决策树的优点是易于理解&#xff0c;有些决策树既可以做分类&#xff0c;也可以做回归。在排名前十的数据挖掘算法中有两种是决策树[1…...

13.4 目标检测锚框标注 非极大值抑制

锚框的形状计算公式 假设原图的高为H,宽为W 锚框形状详细公式推导 以每个像素为中心生成不同形状的锚框 # s是缩放比&#xff0c;ratio是宽高比 def multibox_prior(data, sizes, ratios):"""生成以每个像素为中心具有不同形状的锚框"""in_he…...

【论文笔记】最近看的时空数据挖掘综述整理8.27

Deep Learning for Spatio-Temporal Data Mining: A Survey 被引用次数&#xff1a;392 [Submitted on 11 Jun 2019 (v1), last revised 24 Jun 2019 (this version, v2)] 主要内容&#xff1a; 该论文是一篇关于深度学习在时空数据挖掘中的应用的综述。论文首先介绍了时空数…...

【大模型】基于 LlaMA2 的高 star 的 GitHub 开源项目汇总

【大模型】基于 LlaMA2 的高 star 的 GitHub 开源项目汇总 Llama2 简介开源项目汇总NO1. FlagAlpha/Llama2-ChineseNO2. hiyouga/LLaMA-Efficient-TuningNO3. yangjianxin1/FireflyNO4. LinkSoul-AI/Chinese-Llama-2-7bNO5. wenge-research/YaYiNO6. michael-wzhu/Chinese-LlaM…...

解决elementUI打包上线后icon图标偶尔乱码的问题

解决vue-elementUI打包后icon图标偶尔乱码的问题 一、背景二、现象三、原因四、处理方法方式1&#xff1a;使用css-unicode-loader方式2&#xff1a;升高 sass版本到1.39.0方式3&#xff1a;替换element-ui的样式文件方式4&#xff1a;更换打包压缩方式知识扩展&#xff1a;方式…...

yolov3加上迁移学习和适度的数据增强形成的网络应用在输电线异物检测

Neural Detection of Foreign Objects for Transmission Lines in Power Systems Abstract. 输电线路为电能从一个地方输送到另一个地方提供了一条路径&#xff0c;确保输电线路的正常运行是向城市和企业供电的先决条件。主要威胁来自外来物&#xff0c;可能导致电力传输中断。…...

香橙派OrangePi zero H2+ 驱动移远EC200A

1 系统内核&#xff1a; Linux orangepizero 5.4.65-sunxi #2.2.2 SMP Tue Aug 15 17:45:28 CST 2023 armv7l armv7l armv7l GNU/Linux 1.1 下载内核头安装 下载&#xff1a;orangepi800 内核头rk3399链接https://download.csdn.net/download/weixin_37613240/87635781 1.1.1…...

写一个java中如何用JSch来连接sftp的类并做测试?(亲测)

当使用JSch连接SFTP服务器的类&#xff0c;并进行测试时&#xff0c;可以按照以下步骤操作&#xff1a; 添加JSch库的依赖项。在你的项目中添加JSch库的Maven依赖项&#xff08;如前面所述&#xff09;或下载JAR文件并将其包含在项目中。 <dependency> <groupId&…...

【沐风老师】如何在3dMax中将3D物体转化为样条线构成的对象?

在3dMax中如何把三维物体转化为由样条线构成的对象&#xff1f;通常这样的场景会出现在科研绘图或一些艺术创作当中&#xff0c;下面给大家详细讲解一种3dmax三维物体转样条线的方法。 第一部分&#xff1a;用粒子填充3D对象&#xff1a; 1.创建一个三维对象&#xff08;本例…...

2023国赛数学建模思路 - 案例:随机森林

文章目录 1 什么是随机森林&#xff1f;2 随机深林构造流程3 随机森林的优缺点3.1 优点3.2 缺点 4 随机深林算法实现 建模资料 ## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是随机森林&#xff…...

wxpython:wx.html2 是好用的 WebView 组件

wxpython : wx.html2 是好用的 WebView 组件。 pip install wxpython4.2 wxPython-4.2.0-cp37-cp37m-win_amd64.whl (18.0 MB) Successfully installed wxpython-4.2.0 cd \Python37\Scripts wxdemo.exe 取得 wxPython-demo-4.2.0.tar.gz wxdocs.exe 取得 wxPython-docs-4.…...

DDR5信号完整性解析:JESD79-5标准下的AC/DC输入测量关键指标

1. DDR5信号完整性的核心挑战 DDR5作为新一代内存标准&#xff0c;将数据传输速率推向了前所未有的高度。但随之而来的信号完整性问题&#xff0c;却让不少硬件工程师头疼不已。想象一下&#xff0c;当数据速率突破6400MT/s时&#xff0c;信号在传输线上就像是在走钢丝&#xf…...

基于python+Vue的高校课程考勤成绩管理系统

目录功能模块划分技术实现要点数据库设计扩展功能建议安全与合规项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作功能模块划分 Python后端核心功能 用户认证与权限管理&#xff1a;基于JWT或Session实现多角色&#xff08;管理…...

VSCode安装与应用

vscode官网&#xff1a;https://code.visualstudio.com/Download 点击下一步 注意&#xff1a;这里将创建桌面快捷和下面的1、2勾选&#xff0c;3取消掉&#xff08;以便后续VSCode能右键快捷打开相关文件&#xff0c;3若不取消会将改变文件默认图标为VSCode&#xff0c;并且打…...

Druid监控界面安全加固实战:从暴露风险到生产级防护

1. Druid监控界面暴露风险全景扫描 上周帮客户做安全审计时&#xff0c;发现他们的订单系统监控页面居然能直接通过公网IP访问&#xff0c;打开/druid/index.html就能看到所有SQL执行记录和会话信息。这种场景太典型了——很多团队在开发阶段为了方便调试&#xff0c;把Druid监…...

G-Helper:华硕ROG笔记本性能调校的轻量级解决方案

G-Helper&#xff1a;华硕ROG笔记本性能调校的轻量级解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: h…...

告别混乱!YOLOv8检测结果自动归档:按日期+编号整理图片和标签(附完整Python脚本)

YOLOv8检测结果智能归档系统&#xff1a;打造高效可追溯的计算机视觉工作流 计算机视觉项目管理的痛点与解决方案 在计算机视觉项目的日常开发中&#xff0c;YOLOv8作为当前最先进的实时目标检测框架之一&#xff0c;被广泛应用于从安防监控到工业质检的各个领域。然而&#xf…...

macOS玩家必备:OpenClaw+nanobot自动化办公实战

macOS玩家必备&#xff1a;OpenClawnanobot自动化办公实战 1. 为什么选择OpenClawnanobot组合&#xff1f; 作为一个长期在macOS上折腾自动化工具的老用户&#xff0c;我一直在寻找一个既能保持本地数据隐私&#xff0c;又能灵活处理办公场景的解决方案。直到遇到OpenClawnan…...

从零搭建私有物联网网络:LoRaWAN服务器实战指南

从零搭建私有物联网网络&#xff1a;LoRaWAN服务器实战指南 【免费下载链接】lorawan-server Compact server for private LoRaWAN networks 项目地址: https://gitcode.com/gh_mirrors/lo/lorawan-server 在物联网部署浪潮中&#xff0c;私有服务器搭建已成为企业和开发…...

青少年软件编程等级考试C/C++ 1~8级历年真题解析与备考指南

1. 青少年软件编程等级考试概述 对于很多刚开始学习编程的青少年来说&#xff0c;青少年软件编程等级考试是一个检验学习成果的好机会。这个考试分为1~8级&#xff0c;从最基础的C/C语法到复杂的算法和数据结构&#xff0c;循序渐进地考察学生的编程能力。我当年第一次参加这个…...

WPF颜色转换器实战:如何用ConverterParameter动态切换UI主题色(附完整代码)

WPF颜色转换器实战&#xff1a;如何用ConverterParameter动态切换UI主题色&#xff08;附完整代码&#xff09; 在WPF应用开发中&#xff0c;动态主题切换是提升用户体验的关键功能之一。想象一下&#xff0c;你的应用能够根据用户偏好或系统设置实时切换明暗主题&#xff0c;甚…...