TreeviewCopyright © aleen42 all right reserved, powered by aleen42

350. 两个数组的交集 II

https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/

Java

/*
 * @Author: Goog Tech
 * @Date: 2020-08-30 16:36:47
 * @LastEditTime: 2020-08-30 16:37:05
 * @Description: https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/
 * @FilePath: \leetcode-googtech\#350. Intersection of Two Arrays II\Solution.java
 * @WebSite: https://algorithm.show/
 */

class Solution {

    // 双指针法
    public int[] intersect(int[] nums1, int[] nums2) {
        // 分别对两个数组进行排序
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        // 初始化用于存储交集元素的 list 集合
        List<Integer> list = new ArrayList<>();
        // 初始化双指针并遍历数组元素
        for(int i = 0, j = 0; i < nums1.length && j < nums2.length;) {
            // 若当前 nums1 数组指针 i 所指元素小于 nums2 中指针 j 所指的元素,则将 i 向后移动一位
            if(nums1[i] < nums2[j]) {
                i++;
            // 反之则将 nums2 数组指针 j 向后移动一位
            }else if(nums1[i] > nums2[j]) {
                j++;
            // 若相同则将当前指针所指元素添加到 list 集合中,并将双指针向后移动一位
            }else {
                list.add(nums1[i]);
                i++;
                j++;
            }
        }
        // 根据集合长度初始化结果数组,并通过遍历集合中的元素将其添加到结果数组中
        int[] result = new int[list.size()];
        for(int i = 0; i < list.size(); i++) {
            result[i] = list.get(i);
        }
        // 返回结果数组
        return result;
    }
}

Python

'''
Author: Goog Tech
Date: 2020-08-30 16:36:52
LastEditTime: 2020-08-30 16:37:12
Description: https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/
FilePath: \leetcode-googtech\#350. Intersection of Two Arrays II\Solution.py
WebSite: https://algorithm.show/
'''

class Solution(object):

    # 双指针法
    def intersect(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        # 分别对两个数组进行排序
        nums1, nums2 = sorted(nums1), sorted(nums2)
        # 初始化双指针
        l1, l2 = 0, 0
        # 初始化结果列表
        result = []
        # 通过分别移动双指针来循环遍历两数组中的元素
        while l1 < len(nums1) and l2 < len(nums2):
            # 判断当前两数组的指针所指的元素是否相同
            if nums1[l1] == nums2[l2]:
                # 若相同则将其添加到结果列表中,并将双指针往后移动一位
                result.append(nums1[l1])
                l1 += 1
                l2 += 1
            # 若当前 nums1 数组指针所指的元素小于 nums2,则将 l1 向后移动一位,即寻找相同元素
            elif nums1[l1] < nums2[l2]:
                l1 += 1
            # 反之则将 l2 指针向后移动一位
            else:
                l2 += 1
        # 返回结果
        return result
Copyright © GoogTech 2021 all right reserved,powered by GitbookLast update time : 2021-09-15 01:55:05

results matching ""

    No results matching ""