给定一个整数数组 (下标由 0 到 n-1,其中 n 表示数组的规模,数值范围由 0 到 10000),以及一个 查询列表。对于每一个查询,将会给你一个整数,请你返回该数组中小于给定整数的元素的数量。

注意事项

在做此题前,最好先完成 线段树的构造 and 线段树查询 II 这两道题目。

您在真实的面试中是否遇到过这个题?

Yes
样例

对于数组 [1,2,7,8,5] ,查询 [1,8,5],返回 [0,4,2]

 
 
思路1:先构造出一个符合问题查询需求的线段树。也就是区间内小于某数的值得个数作为额外属性;
             在这里,求得额外属性的时候,可以借鉴线段树构造||中构造的最大值的线段树。
         
思路2:这题没有必要用线段树,写起来多麻烦,可以直接二分查找,代码简洁才是王道;
           
            先做排序,然后查询;这里直接调用lower_bound函数;
           
            函数lower_bound()在begint和end中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。
 
class Solution {
public:
/**
* @param A: An integer array
* @return: The number of element in the array that
* are smaller that the given integer
*/
/*
思路1:先构造出一个符合问题查询需求的线段树。也就是区间内小于某数的值得个数作为额外属性;
在这里,求得额外属性的时候,可以借鉴线段树构造||中构造的最大值的线段树。 思路2:这题没有必要用线段树,写起来多麻烦,可以直接二分查找,代码简洁才是王道; 先做排序,然后查询;这里直接调用lower_bound函数; 函数lower_bound()在begint和end中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。
*/ vector<int> countOfSmallerNumber(vector<int> &A, vector<int> &queries) {
// write your code here sort(A.begin(),A.end());
vector<int> ret;
for(int q:queries){
int cnt = lower_bound(A.begin(),A.end(),q)-A.begin();
ret.push_back(cnt);
}
return ret;
}
};

Lintcode---统计比给定整数小的数的个数的更多相关文章

  1. lintcode - 统计比给定整数小的数的个数(两种方法)

    class Solution { public: /* * @param A: An integer array * @param queries: The query list * @return: ...

  2. lintcode-248-统计比给定整数小的数的个数

    248-统计比给定整数小的数的个数 给定一个整数数组 (下标由 0 到 n-1,其中 n 表示数组的规模,数值范围由 0 到 10000),以及一个 查询列表.对于每一个查询,将会给你一个整数,请你返 ...

  3. 求序列A中每个数的左边比它小的数的个数(树状数组)

    给定一个有N个正整数的序列A(N<=10^5,A[i]<=10^5),对序列中的每一个数,求出序列中它左边比它小的数的个数. 思路:树状数组的经典应用(裸题) #include <i ...

  4. hdu 2838 Cow Sorting 树状数组求所有比x小的数的个数

    Cow Sorting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. 算法笔记求序列A每个元素左边比它小的数的个数(树状数组和离散化)

    #include <iostream> #include <algorithm> #include <cstring> using namespace std ; ...

  6. UPC 2224 Boring Counting (离线线段树,统计区间[l,r]之间大小在[A,B]中的数的个数)

    题目链接:http://acm.upc.edu.cn/problem.php?id=2224 题意:给出n个数pi,和m个查询,每个查询给出l,r,a,b,让你求在区间l~r之间的pi的个数(A< ...

  7. hdu 4417 区间内比h小的数 线段树

    题意求区间内比h小的数的个数 将所有的询问离线读入之后,按H从小到大排序.然后对于所有的结点也按从小到大排序,然后根据查询的H,将比H小的点加入到线段树,然后就是一个区间和. 2015-07-27:专 ...

  8. 课堂练习:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。

    题目 1 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. 2 要求: (1) 写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数.例如 f(12)  ...

  9. 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。

    一.题目: n给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. n要求: n写一个函数 f(N) ,返回1 到 N 之间出现的 “1”的个数.例如 f(12)  ...

随机推荐

  1. C - 壮志难酬

    #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { ]= {'}; int i ...

  2. Problem C: 输入10个数,根据提示进行从小到大输出或从大到小输出

    #include<stdio.h> int main() { char ch; ]; while(scanf("%c",&ch)!=EOF) { int i,j ...

  3. mysql备份相关

    1linux下mysql导出文件 备份mysql数据库的命令 mysqldump -h主机名 -u用户名 -p密码 数据库名字 > 备份的数据库名字.sql 例如:mysqldump  -uro ...

  4. WebService基于SoapHeader实现安全认证(二)

    支持通过Http请求方法调用webservice,同时支持SoapHeader验证. using Globalegrow.Common; using Globalegrow.Model; using ...

  5. 关于XUtils框架细解

    感谢关注xUitls的网友最近一段时间给予的热心反馈,xUtils近期做了很多细节优化之后,功能和api已经稳定. 1.9.6主要更新内容:Bitmap加载动画有时重复出现的问题修复,加载过程优化; ...

  6. asp.net 分布式应用开发

    Net Framework推出的许多新技术为上述任务的实现提供了相对简单的解决方案.其中,基于SOAP的Web Service在处理分布式应用时具有比传统的DCOM/CORBA明显的优点,结合基于We ...

  7. jquery滚动条插件nanoscroller的应用

    默认的滚动条的样式,各个版本的兼容性不是很好, 推荐一款jQuery 插件nanoscroller ,可以自定义滚动条的样式. 应用: 1.引入样式 nanoscroller.css <link ...

  8. c# string与String区别

    [C#] String与string的区别:供参考 转自:https://www.cnblogs.com/rosesmall/p/8351808.html C#是区分大小写的,但是我却发现C#中同时存 ...

  9. 使用虚拟机运行Ubuntu时,主机与宿主机共享文件的方法。

    简介: 首先设置虚拟机: 虚拟机 -> 设置-> Hardware -> Network Adapter,在网络连接处设置为 “桥接:直接连接到物理网络”,“NAT:使用已共享的主机 ...

  10. 【云计算】Docker多进程管理方案-cfengine && supervisord

    docker容器内多进程的管理方案 时间 2015-05-08 00:00:00 涯余 原文  http://yayua.github.io/docker/container-process-moni ...