您的位置 首页 java

「教3妹学算法-每日3题(1)」多个数组求交集

「教3妹学算法-每日3题(1)」多个数组求交集

3妹

2哥 :3妹,今天周日,有什么打算吗。
3妹 :宅在家里呗,外面热死了
2哥 :是的,现在全国各地都在高温,今年的天气真是奇怪
3妹 :对哦, 还有些地方高温过后又开始内涝
2哥 :2022真是不平凡的一年啊,先是疫情,又是高温,又是内涝的
3妹 :2哥,你能不能正能量一些,想想开心的事情,比如教我学算法啊

「教3妹学算法-每日3题(1)」多个数组求交集

讲课

题目:

给你一个二维整数数组 nums ,其中 nums[i] 是由 不同 正整数组成的一个非空数组,按 升序排列 返回一个数组,数组中的每个元素在 nums 所有数组 中都出现过。

示例 1:

输入:nums = [[3,1,2,4,5],[1,2,3,4],[3,4,5,6]]
输出:[3,4]
解释:
nums[0] = [3,1,2,4,5],nums[1] = [1,2,3,4],nums[2] = [3,4,5,6],在 nums 中每个数组中都出现的数字是 3 和 4 ,所以返回 [3,4] 。
示例 2:

输入:nums = [[1,2,3],[4,5,6]]
输出:[]
解释:
不存在同时出现在 nums[0] 和 nums[1] 的整数,所以返回一个空列表 [] 。

提示:

1 <= nums.length <= 1000
1 <= sum(nums[i].length) <= 1000
1 <= nums[i][j] <= 1000
nums[i] 中的所有值 互不相同

思路:

注意题目中nums[i] 是不同正整数数, 且nums[i][j]<1000, 可以用一个1001的数组存储每个数字出现的次数,当出现次数等于数组长度时,说明该数在每个数组里都出现过。

java代码:

 class Solution {
    int[] temp = new int[1001];
    public List<Integer> intersection(int[][] nums) {
      int n = nums.length;
      List<Integer> ans = new ArrayList();
        for(int i = 0;i<n;++i){
            for(int j = 0;j<nums[i].length;++j){
                ++temp[nums[i][j]];
            }
        }
        for(int i =1;i<1001;++i){
            if(temp[i]==n){
                ans.add(i);
            }
        }
        return ans;
    }
}
  

文章来源:智云一二三科技

文章标题:「教3妹学算法-每日3题(1)」多个数组求交集

文章地址:https://www.zhihuclub.com/193000.shtml

关于作者: 智云科技

热门文章

网站地图