牛客刷题---六一儿童节
Posted Calm微笑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客刷题---六一儿童节相关的知识,希望对你有一定的参考价值。
题目描述
六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]> 0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。
输入描述:
第一行:n,表示h数组元素个数 第二行:n个h数组元素 第三行:m,表示w数组元素个数 第四行:m个w数组元素
输出描述:
上台表演学生人数
示例1
输入
复制
3 2 2 3 2 3 1
输出
复制
1
Python实现
import sys
n = int(sys.stdin.readline())
h = list(map(int, sys.stdin.readline().split()))
m = int(sys.stdin.readline())
w = list(map(int, sys.stdin.readline().split()))
h.sort()
w.sort()
i = 0
j = 0
count = 0
while i < n and j < m:
if w[j] >= h[i]:
count = count + 1
i = i + 1
j = j + 1
print(count)
补充知识点:
sort方法和sorted方法:
默认都是升序
sorted(list)会返回一个新的列表。
list.sort() 列表本身会被改变
另一个不同就是list.sort()方法仅被定义在list中,相反地sorted()方法对所有的可迭代序列都有效。
>>> sorted(1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A') [1, 2, 3, 4, 5]
降序
sorted(list, reverse=True)
sorted也可借助key关键字用来实现多级排序
更多排序详细解析见https://www.cnblogs.com/whaben/p/6495702.html
Java实现
import java.util.Arrays;
import java.util.Scanner;
public class Main
public static void main(String[] args)
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] h = new int[n];
for(int i = 0; i < n; i++)
h[i] = in.nextInt();
int m = in.nextInt();
int[] w = new int[m];
for(int i = 0; i < m; i++)
w[i] = in.nextInt();
Arrays.sort(h);
Arrays.sort(w);
int i = 0, j = 0, count = 0;
while(i < n && j < m)
if(w[j] >= h[i])
i++;
count++;
j++;
System.out.println(count);
知识点补充
1.sort()方法
该方法将给定数组进行升序排列,主要有以下两种语法格式:
(1)static void sort(byte[] a)
将数组a中的所有元素进行升序排列
(2)static void sort(byte[] a, int fromindex, int toindex)
将数组a中的 从fromindex(包括)到toindex(不包括)区间 的元素升序排列
以上是关于牛客刷题---六一儿童节的主要内容,如果未能解决你的问题,请参考以下文章
(基础杂记) —— 2021-07-13 —— 牛客刷题错题记录