小标
2018-12-24
来源 :
阅读 1474
评论 0
摘要:本文主要向大家介绍了【云计算】两个数组的交集II解析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
本文主要向大家介绍了【云计算】两个数组的交集II解析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
给定两个数组,编写一个函数来计算它们的交集。
示例 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 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?
解法1:
数组排序后,同时遍历,如果nums1大于nums2,则nums2的指针向后移一位,如果nums2大于nums1,则nums1的指针向后移一位,如果相等,则加入结果集。(算法用了List,因为一开始并不知道结果集多大,如果使用数组,大小无法伸缩)
java:
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
List temp = new ArrayList<>();
Arrays.sort(nums1);
Arrays.sort(nums2);
int i=0;
int j=0;
while(i nums1[i]){
i++;
}else if(nums2[j] < nums1[i]){
j++;
}else{
temp.add(nums1[i]);
i++;
j++;
}
}
int[] res = new int[temp.size()];
for(int m=0;m
BB一句:
List,map 多使用。。。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!
喜欢 | 0
不喜欢 | 1
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号