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

怎么评判一个网站做的好与坏wordpress页面怎么添加样式表

怎么评判一个网站做的好与坏,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.dnsts.com.cn/news/281698.html

相关文章:

  • 网站建设明细费用广州番禺楼盘
  • 营销型网站结构图美图秀秀网页版在线制作
  • 网站建设zgkr网站开发的英文参考文献
  • 微信网站 影楼旅游推广赚佣金哪个平台好
  • 山东济南网站建设公司聊城网站建设哪个好些
  • 怎样自己做免费网站什么是网络营销策略
  • 唐山哪里建设网站好网站制作与建设与网页制作
  • 全球外贸网站排名wordpress空间服务器
  • 印刷网络商城网站建设绍兴 网站建设
  • 四川省住房与城乡建设厅官方网站沈阳小程序开发定制
  • 适合用于网站开发的工具wordpress插件丢失
  • 在线代理浏览网站免费163邮箱注册登录口
  • 优化网站技术深圳网站设计网站建设哪个好
  • 网站推荐2021北京seo优化推广
  • 公司商城网站建设网站建设和客户面谈
  • 网站设置快捷方式网站建设属于资产
  • 工信部网站手机备案查询潍坊专业网站建设
  • 国外网站做推广百度官方客户端
  • 支付网站建设费入什么科目区块链外包开发
  • 中山 家居 骏域网站建设专家怎么做网站的seo优化
  • 万网备案网站名称网络营销方法选择
  • 网站建设简称什么台州网站制作价格
  • 交换链接适用于哪些网站吉林省级建设行政主管部门政务网站
  • 视频网站用什么cms微信公众号运营模式
  • 睢宁网站制作好的网站具备的条件
  • 网站自助建站开发网站app公司
  • 网站做框架福州门户网站
  • 赣州网站建设服务游戏是怎么开发出来的
  • wifi管理网站ui设计网站开发
  • 可以做业务推广的网站有哪些内容解决方案的网站建设