• 数组交集


    题目:

    给定两个数组,编写一个函数来计算它们的交集。

    示例 1:

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

    示例 2:

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

    说明:

        输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
        我们可以不考虑输出结果的顺序。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    分析:

    这道题目比较容易想到暴力解法,嵌套循环跑起来,干就完事了。但是,既然是在学习算法,还是尽量做一下优化比较好。我的思路就是先将数组从小到大排序,然后从前往后遍历,如果发现两个数组中有相同的值,那么添加进结果集,并且记录当前值的下标,下一次循环时,就没必要从下标0开始遍历了,因为数组现在已经是有序的了,所以,可以利用记录下标的方式减少一些判断。排序算法本来是想手动实现,但是考虑到这方面学习的不多,最终决定使用Arrays.sort()方法进行排序。

    代码:

    class Solution {
        public int[] intersect(int[] nums1, int[] nums2) {
            if (nums1.length == 0 | nums1 == null | nums2.length == 0 | nums2 == null) {
                return new int[0];
            }
            Arrays.sort(nums1);
            Arrays.sort(nums2);
            int[] shortArr ,longArr;
            if (nums1.length >= nums2.length) {
                longArr = nums1;
                shortArr = nums2;
            } else {
                shortArr = nums1;
                longArr = nums2;
            }
            int currInt = 0;
            int curr = 0;
            List<Integer> res = new ArrayList<>();
            for (int i = 0; i < shortArr.length; i++) {
                currInt = shortArr[i];
                for (int j = curr; j < longArr.length; j++) {
                    if (longArr[j] == shortArr[i]) {
                        curr = j + 1;
                        res.add(shortArr[i]);
                        break;
                    }
                }
            }
            int[] result = new int[res.size()];
            for (int i = 0; i < res.size(); i++) {
                result[i] = res.get(i);
            }
            return result;
        }
    }
  • 相关阅读:
    js 为表格增加行 动态
    百度测试新搜索结果页面 改进灵感来自谷歌?
    多线程程序中使用fork的问题
    C++ struct和class的区别
    J2SE 5 HotSpot JVM 解释
    并行优化、xvout
    C++基础:纯虚函数和抽象类
    C++的四种cast
    logcat过滤输出
    C++虚函数和纯虚函数(2)
  • 原文地址:https://www.cnblogs.com/wxdmw/p/13291716.html
Copyright © 2020-2023  润新知