当前位置: 首页 > news >正文

《算法笔记》4.2小节——算法初步->哈希

谁是你的潜在朋友

在这里插入图片描述

#include <iostream>
using namespace std;int main() {int n,m,favobook;while(cin>>n>>m){int book[210]={0},reader[210]={0};for (int i = 1; i <= n; ++i) {cin>>favobook;book[favobook]++;reader[i]=favobook;}for (int i = 1; i <= n; ++i) {if(book[reader[i]]>1){cout<<book[reader[i]]-1<<endl;}else{cout<<"BeiJu"<<endl;}}}return 0;
}

分组统计

在这里插入图片描述
在这里插入图片描述

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;int main(){int m;cin>>m;for (int i = 0; i < m; ++i) {int n;cin>>n;int num[n],col[n];for (int j = 0; j < n; ++j) {cin>>num[j];}for (int j = 0; j < n; ++j) {cin>>col[j];}int max_num=*max_element(num,num+n);int max_col=*max_element(col,col+n);int hash_table[max_col+1][max_num+1];memset(hash_table,0,sizeof(hash_table));for (int j = 0; j < n; ++j) {hash_table[col[j]][num[j]]++;}vector<int> num2;sort(num,num+n);unique_copy(num,num+n, back_inserter(num2));vector<int> col2;sort(col,col+n);unique_copy(col,col+n, back_inserter(col2));for (int j = 0; j < col2.size(); ++j) {cout<<col2[j]<<"={";for (int k = 0; k < num2.size(); ++k) {cout<<num2[k]<<'='<<hash_table[col2[j]][num2[k]];if(k<num2.size()-1) cout<<',';}cout<<'}'<<endl;}}return 0;
}

Be Unique (20)

在这里插入图片描述

#include <iostream>
#include <cstring>
using namespace std;int main() {int n;while(cin>>n){int m;int hash_table[10010],num[100010];memset(hash_table,0,sizeof (hash_table));for (int i = 0; i < n; ++i) {cin>>m;num[i]=m;hash_table[m]++;}bool flag=false;for (int i = 0; i < n; ++i) {if(hash_table[num[i]]==1){cout<<num[i]<<endl;flag= true;break;}}if(!flag)  cout<<"None"<<endl;}return 0;
}

String Subtraction

在这里插入图片描述

#include <iostream>
using namespace std;int main(){string str1,str2;getline(cin,str1);getline(cin,str2);bool hashtable[128]={false};for(char c:str2){hashtable[c]= true;}for(char c:str1){if(!hashtable[c])cout<<c;}cout<<endl;return 0;
}

暴力算法,时间超限,没有通过测试

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;int main() {string str1, str2;getline(cin, str1);getline(cin, str2);for (int i = 0; i < str1.size(); ) {int j;for (j = 0; j < str2.size(); ++j) {if(str1[i]==str2[j])str1.erase(i,1);break;}if(j==str2.size()) i++;}cout<<str1<<endl;return 0;
}

相关文章:

  • 观测云数据在Grafana展示的最佳实践
  • Milvus(7):Schema、主字段和自动识别
  • Apache Spark 源码解析
  • Go 语言 TCP 端口扫描器实现与 Goroutine 池原理
  • Modbus主从通信功能码与报文格式
  • 如何在SpringBoot中通过@Value注入Map和List并使用YAML配置?
  • 电子学会—青少年软件编程 python一级等级考试真题—2025年03月
  • 20242817-李臻-课上测试:信号处理
  • uniapp自定义封装tabbar
  • TDengine 数据缓存技术
  • iOS/Flutter混合开发之PlatformView配置与使用
  • 记录一次无界微前端的简单使用
  • Ubuntu 上手动安装 Go 环境并解决“可执行文件格式错误”
  • Mac「brew」快速安装Redis
  • 输入电抗器和输出电抗器的作用-杭州干扰净电子科技
  • 二叉树的遍历(广度优先搜索)
  • Springboot 手搓 后端 滑块验证码生成
  • 【GCC bug】libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found
  • ES历史版本下载
  • uniapp-商城-36-shop 购物车 选好了 进行订单确认2 支付方式颜色变化和颜色滤镜filter
  • 王毅会见乌兹别克斯坦外长赛义多夫
  • 仅退款正式成历史?仅退款究竟该不该有?
  • 体育公益之约跨越山海,雪域高原果洛孕育足球梦
  • 网络达人“拿”别人的视频为自己带货赚佣金,法院判决赔偿1.4万元
  • 这个器官健康的人,不容易得抑郁症
  • 韩国检方重启调查金建希操纵股价案