[Algorithm] Leetcode_Intersection of Two Arrays II

JAsmine_log·2024년 3월 10일
0

Problem

Question
Given two integer arrays nums1 and nums2, return an array of their
intersection. Each element in the result must appear as many times as it shows in both arrays and you may return the result in any order.

Example 1:

Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2,2]

Example 2:

Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [4,9]
Explanation: [9,4] is also accepted.

Constraints:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

Follow up:

  • What if the given array is already sorted? How would you optimize your algorithm?
  • What if nums1's size is small compared to nums2's size? Which algorithm is better?
  • What if elements of nums2 are stored on disk, and the memory is limited such that you cannot load all elements into the memory at once?

Analysis & Solution

  • 두 행렬의 교차로를 반환하라?
  • 두 행렬에서 연속되는 중복 행렬을 구하라는 말!
  • 교차하는 두 개의 행렬의 사이즈를 알수 없다는 것이 포인트 중 하나
  • 교차하는 행렬이 반드시 연속하지는 않을 수 있다. [testcase2] 참고

Code

import java.util.Vector;

class Solution {

    public int[] intersect(int[] nums1, int[] nums2) {
        //time:O(n^2), 7ms
        //space:42.91MB
        Vector<Integer> result = new Vector<Integer>();

        for (int i=0; i < nums1.length; i++) {
            int ischeck = 0;
            int num = nums1[i];
            for (int j = 0; j < nums2.length; j++) {
                if (num == nums2[j] && ischeck == 0) {
                    nums1[i] = -1;
                    nums2[j] = -1;
                    result.add(num);
                    ischeck = 1;
                } 
                else continue;
            }
        }

        int size=result.size();
        int[] answer=new int[size];
        for(int i=0;i<result.size();i++) {
            answer[i] = result.get(i);
        }
        return answer;
    }
}

Tip

Vector <Integer> 를 int[]로 바꾸기

profile
Everyday Research & Development

0개의 댓글