795. Number of Subarrays with Bounded Maximum

转载作者: Faldict
转载地址:https://blog.csdn.net/Faldict/article/details/79480925


Problem Description

We are given an array A of positive integers, and two positive integers L and R (L <= R).

Return the number of (contiguous, non-empty) subarrays such that the value of the maximum array element in that subarray is at least L and at most R.

Solution

遍历数组A,每找到一个符合在[L,R]区间内的数,便把它当作最大值,向左向右分别搜索比它小的数,以他为最大值的子数组的个数即为左边比它小的数目乘以右边比它小的数目。代码如下:

class Solution {
public:
    int numSubarrayBoundedMax(vector<int>& A, int L, int R) {
        int num = 0;
        for (int i=0; i<A.size(); i++) {
            if (A[i] >= L && A[i] <= R) {
                int lp = i, rp = i;

                while (lp-- > 0 && A[lp] <= A[i]);
                while (++rp < A.size() && A[rp] < A[i]);
                num += (i - lp) * (rp - i);
            }
        }
        return num;
    }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. The SecurityManager class for JVM check methods can be defined differently based on context because different contexts may have different security requirements and restrictions. For example, a web application may need to restrict access to certain resources, while a desktop application may not have the same restrictions. 2. The identifier T in the declaration of the method sort represents a generic type parameter that can be replaced with any type when the method is called. For example, if we have an array of integers, we can call the sort method like this: ``` Integer[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3}; Comparator<Integer> c = Comparator.naturalOrder(); Collections.sort(arr, c); ``` 3. The notation <? super T> in the declaration of sort means that the Comparator can accept any type that is a superclass of T. For example, if we have a class Animal and a subclass Dog, we can use a Comparator that accepts any superclass of Dog to sort an array of Dogs: ``` Dog[] dogs = ...; Comparator<Animal> c = ...; Collections.sort(dogs, c); ``` 4. An anonymous inner class in Java is a class that is defined and instantiated at the same time, without a separate class definition. For example, we can define an anonymous inner class to implement an interface and pass it as an argument to a method: ``` Runnable r = new Runnable() { public void run() { System.out.println("Hello, world!"); } }; r.run(); ``` 5. The same example using a lambda expression would look like this: ``` Runnable r = () -> System.out.println("Hello, world!"); r.run(); ``` 6. You might prefer to use an anonymous class instead of a lambda expression when you need to define a class that has additional behavior or state beyond the method being called. You might prefer to use a lambda expression when you only need to define a single method and want to keep the code more concise. 7. (Auto)boxing and (auto)unboxing in Java refer to the automatic conversion between primitive types and their corresponding object wrapper types. For example, an int can be automatically boxed to an Integer, and an Integer can be automatically unboxed to an int. 8. The annotation @Override in Java indicates that a method is intended to override a method in a superclass or interface. Adding this annotation can help catch errors at compile time and make the code more readable. 9. Wildcards in Java are used in generic programming to allow a generic type to accept any type that meets a certain criteria. For example, a List<? extends Number> can accept a List of any subclass of Number. 10. Bounded wildcards in Java restrict the types that can be used with a generic type parameter. For example, a List<? extends Number> can only accept types that are subclasses of Number, while a List<? super Integer> can accept types that are superclasses of Integer. An example of using a bounded wildcard would be: ``` public static double sum(List<? extends Number> list) { double total = 0.0; for (Number n : list) { total += n.doubleValue(); } return total; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值