• LeetCode 1395. 统计作战单位数


     n 名士兵站成一排。每个士兵都有一个 独一无二 的评分 rating 。

    每 3 个士兵可以组成一个作战单位,分组规则如下:

    • 从队伍中选出下标分别为 ijk 的 3 名士兵,他们的评分分别为 rating[i]rating[j]rating[k]
    • 作战单位需满足: rating[i] < rating[j] < rating[k] 或者 rating[i] > rating[j] > rating[k] ,其中  0 <= i < j < k < n

    请你返回按上述条件可以组建的作战单位数量。每个士兵都可以是多个作战单位的一部分。

    示例 1:

    输入:rating = [2,5,3,4,1]
    输出:3
    解释:我们可以组建三个作战单位 (2,3,4)、(5,4,1)、(5,3,1) 。
    

    示例 2:

    输入:rating = [2,1,3]
    输出:0
    解释:根据题目条件,我们无法组建作战单位。
    

    示例 3:

    输入:rating = [1,2,3,4]
    输出:4
    

    提示:

    • n == rating.length
    • 1 <= n <= 200
    • 1 <= rating[i] <= 10^5

    思路:根据题目要求,一个作战单位是(i,j,k)组成,其中,i<j<k,然后只需判断三名士兵的评分是否递增或者递减:

    rating[i]<rating[j]<rating[k]

    或者

    rating[i]>rating[j]>rating[k]

    将其转换成代码如下:

     1 int numTeams(int* rating, int ratingSize){
     2     int i,j,k,cnt=0;
     3     for(i=0;i<ratingSize;i++){
     4         for(j=i+1;j<ratingSize;j++){
     5             for(k=j+1;k<ratingSize;k++){
     6                 if((rating[i]<rating[j]&&rating[j]<rating[k])||(rating[i]>rating[j]&&rating[j]>rating[k])){
     7                     cnt++;
     8                 }
     9             }
    10         }
    11     }
    12     return cnt;
    13 }
  • 相关阅读:
    「LibreOJ β Round #4」子集
    「LibreOJ β Round #4」框架
    「LibreOJ β Round #4」游戏
    [HNOI2008]GT考试
    [HNOI2008]水平可见直线
    UVA 1650 Number String
    [USACO14JAN]Recording the Moolympics
    UVA 1390 Interconnect
    UVA 12520 Square Garden
    [HNOI2008]神奇的国度
  • 原文地址:https://www.cnblogs.com/woju/p/12637463.html
Copyright © 2020-2023  润新知