注意:
代码一:二层循环暴力查找超时
代码二(最棒):借用STL set中的count()方法快速搞定,且没有超时so,集合查询应该很快注意:count()时间复杂度是线性变换的最坏的情况为O(n)so,总体复杂度介于二层循环的O(n平方)和代码三的O(n + log n)之间,还是可以的
代码三:规规矩矩用二分查找二分查找每次减半,so时间复杂度为O(log n)在查找算法中算比较好的,但是要先sort()
代码一:暴力
#include <bits/stdc++.h>
using namespace std;
int a[100005],b[100005],c[100005];
int main(){int n,m,x;set<int> s;scanf("%d%d",&n,&m);//cin >> n >> m;for(int i = 1; i <= n; i++){scanf("%d",&a[i]);//cin >> a[i];}for(int i = 1; i <= m; i++){scanf("%d",&c[i]);// cin >> c[i];}int p =1;for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){if(a[i] == c[j]){b[p++] = a[i];}}}for(int i = 1; i <= p-2; i++){printf("%d ",b[i]);//cout << b[i] << " ";}printf("%d\n",b[p-1]);// cout << b[p-1] << endl;
return 0;
}
代码二:借助set
#include <bits/stdc++.h>
using namespace std;
int a[10005],b[100005];
int main(){int n,m,x;set<int> s;cin >> n >> m;for(int i = 1; i <= n; i++){cin >> a[i];}for(int i = 1; i <= m; i++){cin >> x;s.insert(x);}int p =1;for(int i = 1; i <= n; i++){if(s.count(a[i]) == 1){b[p++] = a[i];}}for(int i = 1; i <= p-2; i++){cout << b[i] << " ";}cout << b[p-1] << endl;
return 0;
}
二分查找
#include <bits/stdc++.h>
using namespace std;
int a[100005],b[100005],c[100005];
int halfsearch(int key,int l,int r){while(l <= r){int mid = (l+r)/2;if(b[mid] == key){return 1;}else if(b[mid] < key){l = mid + 1;}else {r = mid - 1;}
}return 0;
}
int main(){int n,m;cin >> n >> m;for(int i = 1; i <= n; i++){cin >> a[i];}for(int i = 1; i <= m; i++){cin >> b[i];}sort(b+1,b+1+m);int p = 1;for(int i = 1; i <= n; i++){if (halfsearch(a[i],1,m) == 1){ //在b中找a[i]c[p++] = a[i];}}for(int i = 1; i <= p-2; i++){cout << c[i] << " ";}cout << c[p-1] << endl;return 0;
}

开花(在b数组中二分查找a数组元素)相关推荐

  1. JAVA剑指offer编程练习:二维数组中的查找(数组)

    1.题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  2. leetcode练习一:数组(二分查找、双指针、滑动窗口)

    文章目录 一. 数组理论基础 二. 二分查找 2.1 解题思路 2.2 练习题 2.2.1 二分查找(题704) 2.2.2 搜索插入位置(题35) 2.2.3 查找排序数组元素起止位置(题34) 2 ...

  3. Python算法二分查找之重复元素列表

    描述: 请实现有重复数字的升序数组的二分查找 给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的第一个出现的target,如果目标 ...

  4. [剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]

    [问题描述] 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...

  5. 有序数组二分查找java_详解Java数据结构和算法(有序数组和二分查找)

    一.概述 有序数组中常常用到二分查找,能提高查找的速度.今天,我们用顺序查找和二分查找实现数组的增删改查. 二.有序数组的优缺点 优点:查找速度比无序数组快多了 缺点:插入时要按排序方式把后面的数据进 ...

  6. 剑指offer一:二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  7. 《剑指Offer》——二维数组中的查找(JZ1)C++

    文章目录 前言 题目:JZ1 二维数组中的查找 一.暴力解法 二.优化解法 总结 前言 题目:JZ1 二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序, ...

  8. 剑指Offer #01 二维数组中的查找(Java描述)

    题目来源:牛客网-剑指Offer专题 题目地址:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一 ...

  9. python中二分查找什么意思_python中二分查找法的实现方法

    如果想要在有序数据中进行查找想要的数据,二分查找法就个好方法,它可以大大缩短了搜索时间,是一种常见的查找方法.二分查找很好写,却很难写对,下面,小编就简单向大家介绍一下二分查找,并演示器使用代码. 1 ...

最新文章

  1. 【jsp】通过get和post传值的区别
  2. 干货|简单理解逻辑回归基础
  3. Amazon Go开门营业,号称无需现金、无需排队结账,现场究竟体验如何?
  4. OpenCV alpha(权因子) 融合举例
  5. sybase 数据库恢复
  6. 如何向通过TCP socket给服务器端发送的数据里注明自己的客户端地址
  7. 常用的前端跨域的几种方式
  8. [转]工程师进阶之路(三)
  9. are exo exo是什么歌 we_从演出酬劳只有一袋米到万人追捧!EXO在七年中究竟经历了什么?...
  10. eclipse中支持python
  11. ajax请求sql数据库数据类型,ajax请求mysql文件数据库
  12. 基于ssm整合的web考勤管理系统
  13. 人脸识别源码运行指南
  14. 以客户的名义,宏杉科技“存储七项式”律己律人
  15. 关于ccs软件的简单使用
  16. 热切换Log4j日志级别
  17. JS web localStorage传值 coolie传值
  18. 2021年危险化学品生产单位安全生产管理人员最新解析及危险化学品生产单位安全生产管理人员证考试
  19. STM32使用W25QXX flash闪存芯片基于串口自由写入或读取数据
  20. 1400——507B、1370C、1363B、1324D、1365C、1374D

热门文章

  1. python stringvar.get_Python StringVar get函数什么都不返回?
  2. matlab合成音乐原理,matlab 做音乐合成
  3. 抽屉效果_越来越多人家装了餐边柜,为什么不多加一排抽屉?很多家庭没想到...
  4. python导入数据库的数据怎么在qt界面里刷新_Python中使用pyqtgraph库实现数据可视化之逐点刷新波形图...
  5. ios pan手势滑动消失动画_iOS仿抖音—评论视图滑动消失
  6. 人脸关键点: Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks
  7. CS231n——编程作业环境配置
  8. Java构造函数执行顺序
  9. 折正方体-------------给你出道题
  10. AD在原理图中高亮网络的两种方法,altium designer 20