本文介绍: A,B两个人玩一个数字比大小游戏,在游戏前,两个人会拿到相同长度的两个数序列,两个数字序列是不完全相同的,且其中的数字随机的。A,B各自从数字列中挑选出一个数字进行大小比较,赢的人得1分,输的人扣1分,相等则各自的分数不变。用过的数字需要丢弃。求A可能赢B的最大分数输入数据的第1个数表示数字序列的长度N,后面紧跟着两个长度为N的数字序列,A可能嬴B的最大分数1.这里要求计算A可能赢B的最大分数,不妨假设,A知道B的数字序列,且总是B先挑选数字并明示。

题目

A,B两个人玩一个数字比大小游戏,在游戏前,两个人会拿到相同长度的两个数字序列,两个数字序列是不完全相同的,且其中的数字是随机的。
A,B各自从数字序列中挑选一个数字进行大小比较,赢的人得1分,输的人扣1分,相等则各自的分数不变。用过的数字需要丢弃。
求A可能赢B的最大分数
输入描述
输入数据的第1个数字表示数字序列的长度N,后面紧跟着两个长度为N的数字序列,
输出描述
A可能嬴B的最大分数
备注
1.这里要求计算A可能赢B的最大分数,不妨假设,A知道B的数字序列,且总是B先挑选数字并明示
2.可以采用贪心策略,能赢的一定要赢,要输的尽量减少损失
示例1:
输入
3
4 8 10
3 6 4
输出
3
说明
输入数据第1个数字表示数字序列长度为3,后面紧跟着两个长度为3的数字序列。
序列A:4 8 10
序列B:3 6 4
A可以赢的最大分数是3。获得该分数的比大小过程可以是:
1)A: 4 B:3
2)A: 8 B:6
3)A:10 B:4

思路

两个数字序列升序排序,设序列A,B,将排序后的B加入队列queue中(队首最小,队尾最大)
遍历A中数据:
看A[i]和queue队首的大小关系,如果A[i]<=queue.peekFirst(),说明可能赢,分数减一(ans–),那么将损失降到最低,直接和B最大元素比较,此时移除队尾即可
如果A[i]>queue.peekFirst(),那么是能赢的,直接ans++,并移除队首元素

题解

package hwod;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;

public class NumQueueCompare {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.nextLine());
        int[] nums1 = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        int[] nums2 = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        System.out.println(numQueueCompare(nums1, nums2));
    }

    private static int numQueueCompare(int[] nums1, int[] nums2) {
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        LinkedList<Integer> queue = new LinkedList<>();
        for (int i = 0; i < nums2.length; i++) {
            queue.add(nums2[i]);
        }
        int ans = 0;
        for (int i = 0; i < nums1.length; i++) {
            if (nums1[i] <= queue.peekFirst()) {
                ans--;
                queue.removeLast();
            } else {
                ans++;
                queue.pollFirst();
            }
        }
        return ans;
    }
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA)查看当前专栏更新所有题目

原文地址:https://blog.csdn.net/qq_31076523/article/details/134723282

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_49714.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注