diff --git a/content/posts/leetcode.md b/content/posts/leetcode.md
index 00f289b..78808a4 100644
--- a/content/posts/leetcode.md
+++ b/content/posts/leetcode.md
@@ -795,3 +795,85 @@ func getCommon(nums1 []int, nums2 []int) int {
 ### 总结
 
 这是一道典型的双指针问题, 思路清晰就可以很快解决.
+
+## day13 2024-03-10
+
+### 349. Intersection of Two arrays
+
+Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must be unique and you may return the result in any order.
+
+Example 1:
+
+> Input: nums1 = [1,2,2,1], nums2 = [2,2]
+> Output: [2]
+
+Example 2:
+
+> Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
+> Output: [9,4]
+> Explanation: [4,9] is also accepted.
+
+### 题解
+
+因为数组是无序数组, 寻找二者的相同元素比较困难, 故可先对两数组排序, 然后双指针遍历两个数组找到数组中的相同值. 将值作为key, key对应的value为true放入map中. 这里不需要多余判断map中是否已经存在这个key了, 因为再次给相同的key赋值不会增加新的条目, 而只是覆盖之前的key的值, 我们只需要key来判断map中是否有相同值.
+
+### 代码
+
+```go
+func intersection(nums1 []int, nums2 []int) []int {
+    intersection := make(map[int]bool)
+    sort.Ints(nums1)
+    sort.Ints(nums2)
+    index1, index2 := 0,0
+    for index1 < len(nums1) && index2 < len(nums2){
+        if nums1[index1] < nums2[index2]{
+            index1++
+        }else if nums1[index1] > nums2[index2]{
+            index2++
+        }else{
+            _, ok := intersection[nums1[index1]]
+            if !ok{
+                intersection[nums1[index1]] = true
+            }
+            index1++
+            index2++
+        }
+    }
+    var result []int
+    for key, _ := range intersection{
+        result = append(result, key)
+    }
+    return result
+}
+
+```
+
+### 总结
+
+在查看他人题解过程中, 发现排序其实是没有必要的, 可以直接将一个数组中的值全部作为key, 对应的value为true放入map中. 然后遍历另外一个数组, 同时判断当前遍历的元素在不在map中, 若存在则将其放入结果数组中, 同时将map中key对应的value置为false, 表示该key已经被访问过, 这样可以避免在结果数组中添加重复元素.
+
+一个示例代码如下
+
+```go
+func intersection(nums1 []int, nums2 []int) []int {
+    res := make([]int, 0)
+    m := make(map[int]bool, len(nums1))
+
+    for _, v := range nums1 {
+        if _, exists := m[v]; exists {
+            continue
+        }
+        m[v] = false
+    }
+
+    for _, v := range nums2 {
+        used, exists := m[v]
+        if exists && !used {
+            res = append(res, v)
+            m[v] = true
+        }
+    }
+
+    return res
+}
+```