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

怎么做asp网站电脑网页打不开是怎么回事

怎么做asp网站,电脑网页打不开是怎么回事,网页设计素材螺蛳粉图,wordpress设置静态内容缓存时间哈希表是根据关键码的值而直接进行访问的数据结构。 数组就是⼀张哈希表。 哈希表中关键码就是数组的索引下标#xff0c;然后通过下标直接访问数组中的元素#xff0c;如下图所示#xff1a; 那么哈希表能解决什么问题呢#xff0c;一般哈希表都是用来快速判断⼀个元素是…哈希表是根据关键码的值而直接进行访问的数据结构。 数组就是⼀张哈希表。 哈希表中关键码就是数组的索引下标然后通过下标直接访问数组中的元素如下图所示 那么哈希表能解决什么问题呢一般哈希表都是用来快速判断⼀个元素是否出现集合里。 例如要查询一个名字是否在这所学校里。 要枚举的话时间复杂度是O(n)但如果使用哈希表的话只需要O(1)就可以做到。 我们只需要初始化把这所学校里学生的名字都存在哈希表里在查询的时候通过索引直接就可以知道这位同学在不在这所学校里了。 哈希函数 哈希函数把学生的姓名直接映射为哈希表上的索引然后就可以通过查询索引下标快速知道这位同学是否在这所学校里了。 哈希函数如下图所示通过hashCode把名字转化为数值一般hashcode是通过特定编码方式可以将其他数据格式转化为不同的数值这样就把学生名字映射为哈希表上的索引数字了。 如果hashCode得到的数值大于哈希表的大小了也就是大于tableSize了怎么办呢 此时为了保证映射出来的索引数值都落在哈希表上我们会在再次对数值做一个取模的操作就要我们就保证了学生姓名一定可以映射到哈希表上了。 此时问题又来了哈希表我们刚刚说过就是一个数组。 如果学生的数量大于哈希表的大小怎么办此时就算哈希函数计算的再均匀也避免不了会有几位学生的名字同时映射到哈希表同⼀个索引下标的位置。 接下来哈希碰撞登场 哈希碰撞 如图所示小李和小王都映射到了索引下标 1 的位置这一现象叫做哈希碰撞。 一般哈希碰撞有两种解决方法拉链法和线性探测法。 拉链法 刚刚小李和小王在索引 1 的位置发生了冲突发生冲突的元素都被存储在链表中。这样我们就可以通过索引找到小李和小王了 数据规模是dataSize哈希表的大小为tableSize 其实拉链法就是要选择适当的哈希表的大小这样既不会因为数组空值而浪费大量内存也不会因为链表太长而在查找上浪费太多时间。 线性探测法 使用线性探测法⼀定要保证tableSize大于dataSize。我们需要依靠哈希表中的空位来解决碰撞问题。 例如冲突的位置放了小李那么就向下找⼀个空位放置小王的信息。所以要求tableSize⼀定要⼤于dataSize要不然哈希表上就没有空置的位置来存放冲突的数据了。如图所示 常见的三种哈希结构 当我们想使用哈希法来解决问题的时候我们一般会选择如下三种数据结构。 1.数组 2.set集合 3.map映射 这里数组就没啥可说的了我们来看⼀下set和map。 std::unordered_set底层实现为哈希表std::set和std::multiset的底层实现是红黑树红黑树是⼀种平衡二叉搜索树所以key值是有序的但key不可以修改改动key值会导致整棵树的错乱所以只能删除和增加。 std::unordered_map底层实现为哈希表std::map和std::multimap的底层实现是红黑树。同理std::map和std::multimap的key也是有序的 当我们要使用集合来解决哈希问题的时候优先使用unordered_set因为它的查询和增删效率是最优的如果需要集合是有序的那么就用set如果要求不仅有序还要有重复数据的话那么就用multiset。 那么再来看一下map在map是一个key value的数据结构map中对key是有限制对value没有限制的因为key的存储方式使用红黑树实现的。 虽然std::set、std::multiset的底层实现是红黑树不是哈希表std::set、std::multiset使用红黑树来索引和存储不过给我们的使用方式还是哈希法的使用方式即key和value。所以使用这些数据结构来解决映射问题的方法我们依然称之为哈希法。map也是⼀样的道理。 有效的字母异位词 就是判断 s 和 t 是否是由相同的字符组成 数组其实就是⼀个简单哈希表而且这道题目中字符串只有小写字符那么就可以定义一个数组来记录字符串 s 里字符出现的次数。 定义⼀个数组叫做record用来上记录字符串s里字符出现的次数。 需要把字符映射到数组也就是哈希表的索引下标上因为字符a到字符z的ASCII是26个连续的数值所以字符a映射为下标0相应的字符z映射为下标25。 再遍历字符串s的时候只需要将s[i] - ‘a’所在的元素做1操作即可并不需要记住字符a的ASCII只要求出一个相对数值就可以了。这样就将字符串s中字符出现的次数统计出来了。 那看一下如何检查字符串 t 中是否出现了这些字符同样在遍历字符串t的时候对 t 中出现的字符映射哈希表索引上的数值再做 -1 的操作。 那么最后检查一下record数组如果有的元素不为零0说明字符串 s 和 t 一定是谁多了字符或者谁少了字符return false。 class solution { public:bool cmp(string s, string t){int record[26] { 0 };for (int i 0; i s.size(); i){record[s[i] - a];}for (int i 0; i t.size(); i){record[t[i] - a]--;}for (int i 0; i 26; i){if (record[i] ! 0){return false;}}return true;} }; 两个数组的交集 题意给定两个数组编写一个函数来计算它们的交集。 这道题目主要要学会使用一种哈希数据结构unordered_set这个数据结构可以解决很多类似的问题。 注意题目特意说明输出结果中的每个元素一定是唯一的也就是说输出的结果的去重的同时可以不考虑输出结果的顺序 思路如图所示 代码 # include iostream # include vector # include unordered_set using namespace std;int main() {vectorint nums1;vectorint nums2;int n;int m;cin n m;int x;for (int i 0; i n; i){cin x;nums1.push_back(x);}for (int i 0; i m; i){cin x;nums2.push_back(x);}unordered_setint result;unordered_setint nums(nums1.begin(), nums1.end());for (int num : nums2){if (nums.find(num) ! nums.end())result.insert(num);}} 快乐数 # include iostream # include vector # include unordered_set using namespace std;int made(int x) {int sum 0;while (x 0){sum sum (x % 10) * (x % 10);x x / 10;}return sum; }bool cmp(int x) {unordered_setint last;int s x;while (1){s made(s);if (last.find(s) last.end()){if (s 1)return true;last.insert(s);}else{return false;}} }int main() {int n;cin n;cout bool(n); } 两数之和 首先我在强调一下什么时候使用哈希法当我们需要查询一个元素是否出现过或者一个元素是否在集合里的时候就要第一时间想到哈希法。 本题呢我就需要一个集合来存放我们遍历过的元素然后在遍历数组的时候去询问这个集合某元素是否遍历过也就是是否出现在这个集合。 那么我们就应该想到使用哈希法了。 因为本地我们不仅要知道元素有没有遍历过还要知道这个元素对应的下标需要使用key value结构来存放key来存元素value来存下标那么使用map正合适。 再来看⼀下使用数组和set来做哈希法的局限。 1.数组的大小是受限制的而且如果元素很少而哈希值太大会造成内存空间的浪费。 2.set是⼀个集合里面放的元素只能是⼀个key而两数之和这道题目不仅要判断y是否存在而且还要记录y的下标位置因为要返回x和y的下标。所以set也不能用 此时就要选择另⼀种数据结构mapmap是⼀种key value的存储结构可以用key保存数值用value在保存数值所在的下标。 这道题目中并不需要key有序选择std::unordered_map效率更高 接下来需要明确两点 1.map用来做什么 2.map中key和value分别表示什么 map用来存放我们访问过的元素 数组中的元素作为key有key对应的就是valuevalue用来存下标。 # include iostream # include vector # include unordered_map using namespace std;int main() {int num[100];int n;int target;cin n target;unordered_mapint, int map;for (int i 0; i n; i){cin num[i];}for (int i 0; i n; i){if (map.find(target - num[i]) ! map.end()){auto iter map.find(target - num[i]);cout i iter-second;}map.insert(pairint, int{ num[i], i });} } 四数相加II 例如: 输⼊: A [1,  2] B [ -2, -1] C [-1, 2] D [ 0, 2] 输出: 2 本题是使用哈希法的经典题目这道题目是四个独立的数组只要找到A[i] B[j] C[k] D[l] 0就可以不用考虑有重复的四个元素相加等于0的情况。 # include iostream # include vector # include unordered_map using namespace std;int main() {int n;cin n;int a[500];int b[500];int c[500];int d[500];for (int i 0; i n; i){cin a[i];}for (int i 0; i n; i){cin b[i];}for (int i 0; i n; i){cin c[i];}for (int i 0; i n; i){cin d[i];}unordered_mapint, intmap;for (int i : a){for (int j : b){map[i j];}}int count 0;for (int i : c){for (int j : d){if (map.find(0 - i - j) ! map.end())count count map[0 - i - j];}}cout count; }
http://www.zqtcl.cn/news/580211/

相关文章:

  • 上海建站网络公司制作文字图片
  • 平台型网站制作网站建设张世勇
  • 网站建设云南网页游戏大厅都有哪些
  • 网站建设与管理报告书郑州建设银行网站
  • 做网站网页的人是不是思维公司网站建设包括
  • 网站建设都包括哪些网站后台如何上传文件
  • 网站便民服务平台怎么做迁安做网站中的cms开发
  • 做外贸比较好的网站怎么把网站做的好看
  • 有没有在淘宝找人做网站被骗过的台州市环保局网站开发区
  • 公司外文网站制作河南住房和城乡建设厅网站
  • 东莞做网站公司有哪些代码网站推荐
  • 棋类游戏网站开发网站首页顶部图片尺寸
  • 工信部如何查网站备案大连网络推广广告代理
  • 网站建设基本流程心得wordpress首页截断
  • 网站包括哪些内容网站开发的相关技能
  • 百度竞价 百度流量 网站权重qq推广
  • 重庆网站建设总结WordPress简单百度站长插件
  • pc网站转换成微网站工作室推广网站
  • 嘉兴优化网站公司做水果生意去哪个网站
  • 青岛知名网站建设公司排名wordpress商场插件
  • 设计网站猪八戒自己制作logo免费生成器
  • 深圳万齐创享网站建设网站建设基本教程
  • 聊城做网站信息建设工程合同可以分为
  • 网站设计 注意做筹款的网站需要什么资质
  • 家居网站建设费用国土局网站建设经验
  • 企业网站开发教程网站建设更改
  • 违法网站怎么做安全wordpress自定义应用
  • 四平英文网站建设wordpress添加特效
  • 如何在手机上制作网站企业网站 微博模块
  • 网站内容规范网站建设建设公司哪家好