LeetCode第350題

給定兩個數組,編寫一個函數來計算它們的交集。

示例 1:

輸入: nums1 = [1,2,2,1], nums2 = [2,2]
輸出: [2,2]

示例 2:

輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出: [4,9]

思路:1.將兩個數組排序

2.分別遍歷兩個數組,並依次比較元素的大小,若nums1中的元素大的話,則nums2中的索引加1,如果nums1中的元素小的話,則nums1中的索引加1,否則(兩個元素相等),將元素存到List集合中。

	public int[] intersect(int[] nums1,int[] nums2){
		Arrays.sort(nums1);
		Arrays.sort(nums2);
		List<Integer> list=new ArrayList<>();
		for(int i=0,j=0;i<nums1.length && j<nums2.length;){
			if(nums1[i]<nums2[j]){
				i++;
			}
			else if(nums1[i]>nums2[j]){
				j++;
			}
			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;
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章