网站域名设计方案,网站建设比较好的公司,苏州建设工程网,电商网站开发人员人数前言
本博客在 一下文章关于 map 和 set 讲解之下#xff0c;对 map 当中的 operator[] #xff08;#xff09;函数的功能运用#xff0c;感受 map 功能强大。 349. 两个数组的交集 - 力扣#xff08;LeetCode#xff09; 给定两个数组 nums1 和 nums2 #xff0c;返回… 前言
本博客在 一下文章关于 map 和 set 讲解之下对 map 当中的 operator[] 函数的功能运用感受 map 功能强大。 349. 两个数组的交集 - 力扣LeetCode 给定两个数组 nums1 和 nums2 返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例 1输入nums1 [1,2,2,1], nums2 [2,2]
输出[2]
示例 2输入nums1 [4,9,5], nums2 [9,4,9,8,4]
输出[9,4]
解释[4,9] 也是可通过的
法一
我们可以两个集合当中的内容都放进 两个 set 当中第一个是 去重第二是排序好查找。然后去两个set 一个一个遍历比较有相同的就是交集。
法二
还有比 法一 更好的方法开始也都把两个集合放到 两个 set 当中。然后中序遍历保存结果比如是下面两个结果
1 3 5 7 9
3 5 6 7 8 然后遍历不再想上述一样暴力查找而是
都从第一位置开始值小的一方开始直到遍历到相同元素停止找到交集 第一次找到 3 停止。然后两个指针同时都之下下一个元素位置。
然后重复上述过程就可以找出交集。
当然还可以用上述方法寻找差集 代码实现
class Solution {
public:vectorint intersection(vectorint nums1, vectorint nums2) {setint s1(nums1.begin(),nums1.end());setint s2(nums2.begin(),nums2.end());vectorint v;auto it1 s1.begin();auto it2 s2.begin();while(it1 ! s1.end() it2 ! s2.end()){if(*it1 *it2){it1;}else if(*it2 *it1){it2;}else{v.push_back(*it1);it1;it2;}}return v;}
}; 上述这种方法可以用在服务器当中 上述这种模型当中手机等等终端经常和 服务器 进行数据的比对比如判断交集以外的数据当手机当中有 服务器当中没有的 数据的时候就需要上传到 服务器当中。这些本质是都是一些数据比对。使用上述 用 set 的方式是非常好的方法。 20. 有效的括号 - 力扣LeetCode
给定一个只包括 (){}[] 的字符串 s 判断字符串是否有效。
有效字符串需满足
左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 在上图当中可以感受一些 C有了 map 之后 相比于 C 语言的是实现有多么好用。
而且对于 c 当中硬性的括号判断C当中map 只需要多增加几个结点就可以了。C中中硬性的括号判断很冗余。 138. 复制带随机指针的链表 - 力扣LeetCode C语言当中的实现过程可以看下面这篇博客赋值带随机指针的链表-CSDN博客 以下是C当中利用 map 的key 和 value 来实现的映射关系。
class Solution {
public:Node* copyRandomList(Node* head) {mapNode*, Node* CopyNodeMap; // key 值存储 原链表当中的结点// value 值存储 新链表当中结点// 两边位置相对一样Node* copyhead nullptr, *copytail nullptr;// 先构建新链表构建 next 指针Node* cur head;while(cur){Node* copyNode new Node(cur-val);if(copyhead nullptr){copyhead copytail copyNode;}else{copytail-next copyNode;copytail copytail-next;}// 添加新表和旧表映射关系CopyNodeMap[cur] copytail;cur cur-next;}// 新表当中 random赋值cur head;Node* copyptr copyhead;while(cur){if(cur-random nullptr)copyptr-random nullptr;elsecopyptr-random CopyNodeMap[cur-random];cur cur-next;copyptr copyptr-next;}return copyhead;}
};