码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 1395. 统计作战单位数

时间:2020-05-19 23:03:49      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:public   problems   利用   直接   复杂度   长度   复杂   ++   pre   

https://leetcode-cn.com/problems/count-number-of-teams/

这个题目虽然是中等题,但是给的测试用例很少,最大才200个,所以直接暴力三循环也可以过,时间复杂度O(n^3),代码就不贴了。

后来看了花花酱的题解,学到个更加牛逼的技巧?

我们固定一个i,然后寻找左边有多少个比rating[i]小的记作l,右边有多少个比其大的记作r. 然后区间长度减去l或者r就能算出左边有多少个比rating[i]大的,右边有多少个比其小的 相加就是答案

class Solution {
    public int numTeams(int[] rating) {
        int ans = 0;
        for(int j = 0; j < rating.length; j++){
            int left = 0;
            int right = 0;
            for(int i = 0; i < j; i++){
                if(rating[i] < rating[j]){
                    left++;
                }
            }
            for(int k = j+1; k < rating.length; k++){
                if(rating[k] > rating[j]){
                    right++;
                }
            }
            ans += (left * right) + ((j-left) * (rating.length - j - right - 1));
        }
        return ans;
    }
}

其实这个就是利用到了数学特性,算法还是靠数学呀

LeetCode 1395. 统计作战单位数

标签:public   problems   利用   直接   复杂度   长度   复杂   ++   pre   

原文地址:https://www.cnblogs.com/ZJPaang/p/12919891.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!