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

制作单页网站四川住房城乡建设厅官方网站

制作单页网站,四川住房城乡建设厅官方网站,在线申请注册入口,wordpress设置了固定链接242.有效的字母异位词 题目链接#xff1a;242.有效的字母异位词 文档讲解#xff1a;代码随想录有效的字母异位词 视频讲解#xff1a;LeetCode#xff1a;有效的字母异位词 状态#xff1a;学会了 思路#xff1a; 数组其实是简单哈希表。 哈希表用来快速判断元素是否在…242.有效的字母异位词 题目链接242.有效的字母异位词 文档讲解代码随想录有效的字母异位词 视频讲解LeetCode有效的字母异位词 状态学会了 思路 数组其实是简单哈希表。 哈希表用来快速判断元素是否在一个集合里面出现。 哈希表数组需要把字符映射到数组也就是哈希表的索引下标因为字符a到字符z的ASCII是26个连续的数值所以字符a映射下标0相应字符z映射为下标25。哈希表设计为长为26的数组。哈希函数为s[i] - ‘a’映射为字符的ASCII值。最后record数组有元素不为零说明字符串s和t一定是字符数不同return false。否则遍历后return true。 时间复杂度O(n)空间复杂度O(1)record是定义的一个常量大小的辅助数组。 // 哈希表数组就行 class Solution { public:bool isAnagram(string s, string t) {// 并不需要记住字符a的ASCII只要求出一个相对数值就可以了int record[26] {0};// 记录s字母情况for (int i 0; i s.size(); i) {record[s[i] - a];}// 记录t字母情况for (int i 0; i t.size(); i) {record[t[i] - a]--;}// 判断是否数组元素都为0// record数组如果有的元素不为零0说明字符串s和t 一定是谁多了字符或者谁少了字符。for (int i 0; i 26; i) {if (record[i] ! 0) return false;}// record数组所有元素都为零0说明字符串s和t是字母异位词return true;} };349. 两个数组的交集 题目链接349. 两个数组的交集 文档讲解代码随想录两个数组的交集 视频讲解LeetCode两个数组的交集 状态学会了 思路 这道题不能用 数组 来做原因是使用数组来做哈希的题目是因为题目都限制了数值的大小而且如果哈希值比较少、特别分散、跨度非常大使用数组就造成空间的极大浪费。但是这道题没有所以考虑哈希表另一种常见类型。 std::set和std::multiset底层实现都是红黑树std::unordered_set的底层实现是哈希表 使用unordered_set 读写效率是最高的并不需要对数据进行排序而且还不要让数据重复所以选择unordered_set。 哈希表unordered_set设计一个ordered_map来存储交集元素返回是一个数组。去重记录比较然后存储最后转换。思路如下 时间复杂度O(nm)m是因为最后set转换为vector空间复杂度O(n) // 哈希表unordered_set class Solution { public:vectorint intersection(vectorint nums1, vectorint nums2) {// 哈希表 unordered_set去重、无序、快unordered_setint result_set;// 去重nums1unordered_setint nums1set(nums1.begin(), nums1.end());// 在nums2中查找for (int num : nums2) {// 发现nums2的元素 在nums_set里又出现过if (nums1set.find(num) ! nums1set.end()) {result_set.insert(num);}}// 返回数组形式return vectorint(result_set.begin(), result_set.end());} };注意哈希问题不能都用 set 来解决因为直接使用set 不仅占用空间比数组大而且速度要比数组慢set把数值映射到key上都要做hash计算的。不要小瞧 这个耗时在数据量大的情况差距是很明显的。 补充本题后面 力扣改了 题目描述 和 后台测试数据增添了 数值范围。所以就可以 使用 数组 来做哈希表了 因为数组都是 1000以内的。 202. 快乐数 题目链接202. 快乐数 文档讲解代码随想录快乐数 状态学会了 思路 哈希表unordered_set题目出现 无限循环 也就是说明求和的过程中sum会重复出现。所以我们需要快速判断sum这个元素是否出现在集合里面考虑哈希法重复了就 return false;否则一直找到sum 1为止。 时间复杂度O(logn)空间复杂度O(logn) // 哈希表unordered_set class Solution { public:// 哈希表:unordered_set// 判断sum是否重复出现 出现返回false 否则一直找到sum1为止// 取数值各个位上的单数之和int getSum (int n) {int sum 0;while (n) {sum (n % 10) * (n % 10);n / 10;}return sum;}bool isHappy(int n) {unordered_setint set;while (1) {int sum getSum(n);if (sum 1) return true;// 如果这个sum曾经出现过说明已经陷入了无限循环了立刻return falseif (set.find(sum) ! set.end()) {return false;} else {set.insert(sum);}n sum;}} };注意如何对取数值各个位上的单数操作 while (n) {sum (n % 10) * (n % 10);n / 10; }补充时间复杂度解释 空间复杂度同样和原始数字 n 的位数相关也就是与 O(logn)相关这里的 n 是最初传入 getSum 函数的数字。 1. 两数之和 题目链接1. 两数之和 文档讲解代码随想录两数之和 视频讲解LeetCode两数之和 状态学会了 思路 本道题中不仅需要判断元素是否遍历过还需要返回元素下标所以需要 key value 结构来存储key来存放元素value来查询放下标这就是map。 std::unordered_map 底层实现为哈希表std::map 和std::multimap 的底层实现是红黑树。同理std::map 和std::multimap 的key也是有序的这个问题也经常作为面试题考察对语言容器底层的理解。 这道题目中并不需要key有序选择std::unordered_map 效率更高 使用 map 需要明白两点用map来做什么map中key和value分别表示什么 哈希表unordered_mapmap 用来存放我们访问过的元素因为遍历数组的时候需要记录我们之前遍历过哪些元素和对应的下标这样才能找到与当前元素相匹配的相加等于target。map中的存储结构为{key:数组元素, value:数组元素对应的下标}。流程为遍历数组判断是否存在满足条件的key有则返回下标没有则将元素存入map。 时间复杂度 O(n)空间复杂度O(n) // 哈希表unordered_map class Solution { public:vectorint twoSum(vectorint nums, int target) {// 哈希表unordered_map// 我需要遍历下标- key valueunordered_mapint, int map;// 遍历数组for(int i 0; i nums.size(); i) {auto iter map.find(target - nums[i]);if (iter ! map.end()) {return {iter-second, i};} else {map.insert(pairint, int(nums[i], i));}} return {};} };补充 使用 数组 和 set 来做哈希法的局限 数组 的大小是受限制的而且如果元素很少而哈希值太大会造成内存空间的浪费。set 是一个集合里面放的元素只能是一个key而两数之和这道题不仅要判断y是否存在还要记录y的下标位置因为要返回 x 和 y 的下标所以set不能用。这里只能选择数据结构map是一种 key value的存储结构可以用key保存数值value再保存数值所在的下标。 map.find()是unordered_map的一个成员函数返回的是一个迭代器。迭代器是一种对象它可以指向容器中的某个元素并且支持一些操作如移动到下一个元素、访问当前元素value iter-second)等。如果map中存在这个key的元素iter会指向这个元素若不存在iter会等于map.end()。 {nums[i], i}是c中一种初始化列表的语法用来初始化一个std::vector对象。
http://www.hkea.cn/news/14403317/

相关文章:

  • 开发企业网站多少钱做静态网站需要成本吗
  • 网站建设发布深圳互联网公司招聘信息
  • 做网站约需要多少钱徐州网站建设策划
  • 做网站的一般多钱如何建立门户网站
  • 深圳有哪些做网站公司免费家装设计网
  • 论文旅游网站建设安装失败 无法创建目录wordpress
  • 广西注册公司网站wordpress魔板
  • 优秀网站展示微信群运营
  • 网站建设的核心是免费自助建站怎么样
  • 58同城网站模板下载外链发布的平台最好是
  • 网站搭建说明flash网站设计师
  • 建设网站技术解决方案企业获客方式
  • 做网站要在工商备案吗17.zwd一起做网站
  • 购物网站运营WordPress百度智能小程序
  • 网站编写教程wordpress4.9漏洞利用
  • 梅州兴宁网站建设网络营销策略名词解释
  • 福州市工程建设质量管理网站微信 分享网站开发
  • 网站如何续费物流企业的网站模板
  • 查看WordPress网站插件如何自己办网站
  • 淘宝网站的建设目的网络营销推广外包平台
  • 专业官方网站建设phpstudy怎么做网站
  • 怎样写网站文案查询关键词网站
  • 电商网站建设常见问题网站建设 紧急检查工作
  • 制作一个自适应网站源码本地网站搭建
  • 培训行业网站建设求职简历模板2021
  • 网站运营方案设计网站的建设思路
  • 平价建网站格公众号的网站怎么做的
  • 长春联通网站备案小广告怎么做
  • 刚做的网站关键字能搜到么qq个人邮箱登录入口
  • 建立公司网站步骤wordpress轮播插件下载