牛客刷题|HJ24 合唱队,HJ25 数据分类处理 , HJ26 字符串排序

HJ24 合唱队

题目链接:合唱队_牛客题霸_牛客网 (nowcoder.com)

思路:对队列中每个元素分别找左边最长递增序列和右边最长递减序列(都不一定是连续的),那么以当前元素为“山顶”可以保留的最大人数就是两者之和减一。

寻找最长递增序列可以用动态规划实现。

但测试用例只通过了2/20,我使用其它用户发的代码并作了些格式上的修改,依然只能通过2/20。有没有人能告诉为什么:(

代码(未通过所有测试案例)

import sys
N = sys.stdin.readline().strip()
N = int(N)
queue = sys.stdin.readline().strip()
queue = queue.split()
dp1, dp2 = [1] * len(queue), [1] * len(queue)
def count_max_sub(N, queue):dp = [1] * Nfor i in range(1, len(queue)):for j in range(i):if queue[j] < queue[i]:dp[i] = max(dp[i], dp[j] + 1)return dp
dp1 = count_max_sub(N, queue)
dp2 = count_max_sub(N, queue[::-1])[::-1]remain = 0
for i in range(len(queue)):remain = max(remain, dp1[i] + dp2[i] - 1)
print(N - remain)

HJ25 数据分类处理 

题目链接:数据分类处理_牛客题霸_牛客网 (nowcoder.com)

思路:使用哈希表:{R(i): [[I中包含R(i)的元素坐标1,i中包含R(i)的元素1 ], [I中包含R(i)的元素坐标2,i中包含R(i)的元素2],... ]}。即键(key)为R中每个元素,键值(value)为列表I中包含key的元素idx和元素的合集。

明白题目想要得到什么后,思路就简单了,把R去重排序后,遍历R中每个元素R(i),判断I中有哪些元素包含R(i), 如果包含,就把对应的idx和元素加入到字典中。最后根据字典中的键,键值,每个键值的长度等信息得到想要的结果。

注意:

1. 用set对R进行去重。

2. 为了将R中元素从小到大排列,需要先将里面的str元素映射为int类型,又为了之后能直接以str的形式判断包含关系,需要将里面元素重新映射为str类型,代码如下:

R = map(str, map(int, sorted(set(R))))

3. 字典应使用OrderedDict,而不是dict, 这样能让字典按照R中插入的顺序来排序。具体参考「Python 字典 ♩」键值对的顺序问题 - 知乎 (zhihu.com)

4. 处理输出格式:我先用字符串挨个相加的方式,但显示输出格式错误(但是内容是对的),后来将元素添加到list中,最后用‘ ’.join连接起来才符合。目前不明白是什么原因。 

代码

import sys
from collections import OrderedDictIline = sys.stdin.readline().split()
numI, I = Iline[0], Iline[1:]
Rline = sys.stdin.readline().split()
numR, R = Rline[0], Rline[1:]R = map(str,sorted(map(int,set(R))))dic = OrderedDict()
for Ri in R:for j, num in enumerate(I):if Ri in num:if Ri not in dic:dic[Ri] = [[j, num]]elif Ri in dic:dic[Ri].append([j, num])ans = ''
count = 0
result = []
for key, value in dic.items():# ans += key# ans += ' '+ str(len(dic[key]))result.append(key)result.append(len(dic[key]))count += 2for item in dic[key]:# ans += ' ' + str(item[0])# ans += ' ' + str(item[1])count += 2result.append(item[0])result.append(item[1])
result = [count] + result
# print(str(count) + ' ' + ans)  # 输出格式不符合
print(' '.join(str(x) for x in result))

HJ26 字符串排序

题目链接:字符串排序_牛客题霸_牛客网 (nowcoder.com)

思路:本来想着是不是要先定义一种排序规则,但很麻烦,还要考虑“同一个英文字母的大小写同时存在时,按照输入顺序排列”这种情况,其实不需要如此。

非字母的字符排在原位,需要变化的是字母的位置。我们先确立字母之间的先后顺序。建立一个list letterOrder,依次判断每个字符有没有a/A,有没有 b/B,如果有,就把它添加到letterOrder中,这样就能保证字符串按照a/A~z/Z的顺序,且相同字母按照输入顺序排列。

最后,建立最终顺序列表ans,初始化letterOrder中的字母idx。遍历字符串,如果是字母,意味着当前位置要加某个字母,就按照letterOrder中的顺序加到ans,如果非字母,就直接加到ans

代码

import sysstrs = sys.stdin.readline().strip()
letterOrder = []
for i in range(26):for item in strs:if ord(item) - ord('a') == i or ord(item) - ord('A') == i:letterOrder.append(item)
idx = 0
ans = []
for str in strs:if ord('a') <= ord(str) <= ord('z') or ord('A') <= ord(str) <= ord('Z'):ans.append(letterOrder[idx])idx += 1else:ans.append(str)print(''.join(ans))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

el-dialog封装组件

父页面 <template><div><el-button type"primary" click"visible true">展示弹窗</el-button><!-- 弹窗组件 --><PlayVideo v-if"visible" :visible.syncvisible /></div> </template><sc…

C语言数组进阶-数组名的理解和计算

在之前我们关于数组的内容中&#xff0c;我们已经提出了关于数组名的理解 一般情况下&#xff0c;数组名是数组首元素的地址&#xff0c;但有两个例外&#xff1a; 1.sizeof(数组名)是计算整个数组的大小 2.&数组名是取出的整个数组的地址 sizeof不管后面是啥&#xff0c;只…

谷粒学院--在线教育实战项目【一】

谷粒学院--在线教育实战项目【一】 一、项目概述1.1.项目来源1.2.功能简介1.3.技术架构 二、Mybatis-Plus概述2.1.简介2.2.特性 三、Mybatis-Plus入门3.1.创建数据库3.2.创建 User 表3.3.初始化一个SpringBoot工程3.4.在Pom文件中引入SpringBoot和Mybatis-Plus相关依赖3.5.第一…

融资项目——OpenFeign的降级与熔断

当一个微服务调用其他微服务时&#xff0c;如果被调用的微服务因各种原因无法在规定时间内提供服务&#xff0c;则可以直接使用本地的服务作为备选&#xff0c;即进行降级熔断。 如之前所提到的微服务为例&#xff1a; 如果希望实现降级熔断&#xff0c;可以在本地创建一个实现…

探索vue框架的世界: 内部、外部样式和内联样式动态绑定的方法

在实际项目中&#xff0c;经常会遇到这样的场景&#xff0c;可以通过逻辑层中设定的变量&#xff0c;在视图层中来呈现不同的样式&#xff0c;那么这种动态绑定样式的方式如何实现呢&#xff1f; 本篇文章&#xff0c;博主将和大家分享动态绑定内联样式style 和 动态绑定内部和…

AI改变游戏规则:内容创作的新时代!

AI技术&#xff0c;尤其是人工智能&#xff08;AI&#xff09;在内容创作领域的应用&#xff0c;正开启了一个全新的时代。这一时代的核心在于利用AI的能力&#xff0c;不仅提高内容创作的效率&#xff0c;还能引入前所未有的创新元素&#xff0c;从而彻底改变游戏规则。 AI在…

OpenCV与AI深度学习 | 基于OpenCV实现模糊检测 / 自动对焦

本文来源公众号“OpenCV与AI深度学习”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;基于OpenCV实现模糊检测 / 自动对焦 导 读 本文主要介绍使用OpenCV实现图像模糊检测/相机自动对焦功能。 前 言 为了检测图片是否对焦&…

coqui-ai/TTS 案例model文件

GitHub - coqui-ai/TTS: &#x1f438;&#x1f4ac; - a deep learning toolkit for Text-to-Speech, battle-tested in research and production Coqui AI的TTS是一款开源深度学习文本转语音工具&#xff0c;以高质量、多语言合成著称。它提供超过1100种语言的预训练模型库&…

C#,哈夫曼编码(Huffman Code)压缩(Compress )与解压缩(Decompress)算法与源代码

David A. Huffman 1 哈夫曼编码简史&#xff08;Huffman code&#xff09; 1951年&#xff0c;哈夫曼和他在MIT信息论的同学需要选择是完成学期报告还是期末考试。导师Robert M. Fano给他们的学期报告的题目是&#xff0c;寻找最有效的二进制编码。由于无法证明哪个已有编码是…

java编程的简化表达方法——Lambda表达式及方法引用概述

前言&#xff1a; 学到简化写法了&#xff0c;感觉需要对代码非常熟悉才能用得好&#xff0c;整理下写法。打好基础&#xff0c;daydayup! Lambda表达式 Lambda表达式是JDK8开始新增得一种语法形式&#xff1b;作用&#xff1a;用于简化匿名内部类的代码写法。 Lambda表达式的格…

CPU处理器模式与异常

ARM架构中的Exception Level&#xff08;EL&#xff09; 在ARM架构中&#xff0c;Exception Level&#xff08;EL&#xff09;是一个关键概念&#xff0c;它表示了处理器当前处理异常或中断的层次。ARMv8-A架构定义了四个Exception Levels&#xff1a;EL0、EL1、EL2和EL3&…

蓝桥杯嵌入式模板构建——RCT时钟

在CubeMX里的RTC模块启用RTC时钟和日历功能 输入到RTC的时钟要配置成1HZ,这样的话RTC每经过1s走时一次 由于RTC时钟默认配置为32Khz 所以我们需要将异步分频值与同步分频值的乘积调整为32K分频即可一秒走时一次 频率&#xff1a;32000hz / 32000hz 1hz 必须是31和999&#…

程序员的最佳副业居然是这个

程序员的副业思考 从 2008 年开始接触编程&#xff0c;已经在程序开发领域摸爬滚打 16 年。期间呆过私企&#xff0c;国企&#xff0c;外企&#xff0c;500 强&#xff0c;打过杂&#xff0c;创过业&#xff0c;干过核心开发&#xff0c;也搞过代码测试。总结起来就是四个字&a…

阿珊详解Vue路由的两种模式:hash模式与history模式

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

基于SpringBoot的在线拍卖系统设计与实现(源码)

项目源码&#xff1a;https://gitee.com/oklongmm/biye2 引言 随着互联网技术的发展&#xff0c;电子商务得以快速发展&#xff0c;其中之一的在线拍卖系统也逐渐得到了广泛的应用。但是&#xff0c;现有的在线拍卖系统在操作复杂性、安全性和稳定性方面存在一定的问题。为了…

计算机网络面经-HTTPS加密过程

前言 在上篇文章HTTPS详解一中&#xff0c;我已经为大家介绍了 HTTPS 的详细原理和通信流程&#xff0c;但总感觉少了点什么&#xff0c;应该是少了对安全层的针对性介绍&#xff0c;那么这篇文章就算是对HTTPS 详解一的补充吧。还记得这张图吧。 HTTPS 和 HTTP的区别 显然&am…

idea Gradle 控制台中文乱码

如下图所示&#xff0c;idea 中的 Gradle 控制台中文乱码&#xff1a; 解决方法&#xff0c;如下图所示&#xff1a; 注意&#xff1a;如果你的 idea 使用 crack 等方式破解了&#xff0c;那么你可能需要在文件 crack-2023\jetbra\vmoptions\idea.vmoptions 中进行配置&#xf…

AcWing 106. 动态中位数

#include<bits/stdc.h>using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int t;cin>>t;while(t--){//num 表示编号&#xff0c;n 表示数字的数目&#xff0c;题目保证//n 是奇数int num,n;cin>>num>>n;//输出编号&#…

Java引用传递及基本应用

在 Java 中&#xff0c;传递参数的方式主要有两种&#xff1a;值传递&#xff08;传递的是对象的引用值&#xff09;和引用传递。本教程将重点介绍 Java 中的引用传递以及其基本应用。 1. 引用传递概念 在 Java 中&#xff0c;所有的方法参数都是通过值传递的。对于对象类型的…

从零学算法41

41.给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;nums […