成都网站建设加推广公司本周新闻热点事件
成都网站建设加推广公司,本周新闻热点事件,网站开发的项目,wordpress适配手机HJ24 合唱队
题目链接#xff1a;合唱队_牛客题霸_牛客网 (nowcoder.com)
思路#xff1a;对队列中每个元素分别找左边最长递增序列和右边最长递减序列#xff08;都不一定是连续的#xff09;#xff0c;那么以当前元素为“山顶”可以保留的最大人数就是两者之和减一。…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)的元素坐标1i中包含R(i)的元素1 ], [I中包含R(i)的元素坐标2i中包含R(i)的元素2],... ]}。即键key为R中每个元素键值value为列表I中包含key的元素idx和元素的合集。
明白题目想要得到什么后思路就简单了把R去重排序后遍历R中每个元素Ri判断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/bicheng/87135.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!