2529. 正整数和负整数的最大计数

class Solution {

public:

    int maximumCount(vector<int>& nums) {

        int neg=ranges::lower_bound(nums,0)-nums.begin();

        int pos=nums.end()-ranges::upper_bound(nums,0);

        return max(neg,pos);

    }

};

在数组 `nums = [-3, -2, -1, 0, 0, 1, 2]` 中,我们可以很容易地手动计算负数(negatives)和正数(positives)的数量。

- 负数(negatives):`-3`, `-2`, `-1`,所以 `neg = 3`。
- 正数(positives):`1`, `2`,所以 `pos = 2`。

因此,对于这个数组,负数的数量是3,正数的数量是2。

如果我们要使用类似前面提到的代码片段来计算这些值,我们可以再次回顾那个方法:

```cpp
int neg = ranges::lower_bound(nums, 0) - nums.begin();
int pos = nums.end() - ranges::upper_bound(nums, 0);
```

对于这个数组,`ranges::lower_bound(nums, 0)` 将会返回一个迭代器,指向第一个大于等于0的元素,也就是第一个0的位置。由于我们的数组是排序好的,我们知道第一个0正好位于数组的中间,也就是索引位置3(数组索引从0开始)。因此,`neg` 的值将是3,即迭代器位置减去开始位置。

对于 `ranges::upper_bound(nums, 0)`,它会返回一个迭代器,指向第一个大于0的元素,也就是1的位置。在这个例子中,1位于索引位置5,但是因为我们关心的是从0开始到第一个大于0的元素之间的距离,我们需要从数组的结尾减去这个位置。由于数组的结尾迭代器实际上指向数组最后一个元素的后一个位置,我们需要从7(数组的长度)中减去5,得到正数的个数为2。

综上所述:

- `neg = 3`
- `pos = 2`

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值