ARTS WEEK6

用户头像
紫枫
关注
发布于: 2020 年 07 月 25 日

Algorithm

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

 

示例 1:

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

输出:[2,2]

示例 2:

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

输出:[4,9]

 

说明:

输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。

我们可以不考虑输出结果的顺序。

进阶:

如果给定的数组已经排好序呢?你将如何优化你的算法?

如果 nums1 的大小比 nums2 小很多,哪种方法更优?

如果 nums2 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?



来源:力扣(LeetCode)

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

class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
if(nums1.length > nums2.length) {
return intersect(nums2, nums1);
}
Arrays.sort(nums1);
Arrays.sort(nums2);
int i = 0;
int j = 0;
int index = 0;
int[] intersection = new int[nums1.length];
while(i < nums1.length && j < nums2.length){
if(nums1[i] == nums2[j]) {
intersection[index++] = nums1[i];
i++;
j++;
} else if (nums1[i] < nums2[j]) {
i++;
} else if(nums1[i] > nums2[j]) {
j++;
}
};
return Arrays.copyOfRange(intersection, 0, index);
}
}



想到了hash存储再一一比较的方法,另有一种排序数组的双指针的方法

Review

来源:https://97-things-every-x-should-know.gitbooks.io/97-things-every-programmer-should-know/content/en/thing_07/

分享公共代码会增加代码间的依赖性,一定要注意上下文环境,因为需求很有可能不断变化,并不是所有的代码都被重用就是好代码;团队成员间互相清理对方的坏代码,会使系统的发展逐渐变得越来越好。

Tip

linux中,bash有四种模式,会根据这四种模式而选择加载不同的配置文件



interactive + login shell



  • 用户直接登陆到机器获得的第一个shell

  • 用户使用ssh user@remote获得的shell



先加载/etc/profile,然后再尝试加载下列三个配置文件之一,一旦找到其中一个便不再继续寻找:



  • ~/.bash_profile

  • ~/.bash_login

  • ~/.profile



non-interactive + login shell

交互式的登陆shell,这种是不太常见的情况,加载方式同第一种



interactive + non-login shell

这种模式最常见的情况为在一个已有shell中运行bash,此时会打开一个交互式的shell。对于此种情况,启动shell时会去查找并加载/etc/bash.bashrc和~/.bashrc文件。



non-interactive + non-login shell

它会去寻找环境变量BASH_ENV,将变量的值作为文件名进行查找,如果找到便加载它。



Share

https://www.cnblogs.com/kevingrace/p/6590319.html docker网络通信配置的简单介绍



用户头像

紫枫

关注

还未添加个人签名 2019.12.25 加入

还未添加个人简介

评论

发布
暂无评论
ARTS WEEK6