不用写码,说思路,给两个list,一个表示前一天公司的员工,一个表示今天的公司员工,如何找到哪些是新来的哪些人走了?
比如昨天的list是{a, b, c}, 今天的list是{b, c, d},表示今天a员工走了,新来了d员工,问你使用什么数据结构,分析run time。
public class Solution {
public int[] question(int[] nums1, int[] nums2) {
HashSet<Integer> s1=new HashSet<>();
HashSet<Integer> s2=new HashSet<>();
for(int i: nums1) s1.add(i);
for(int i: nums2) s2.add(i);
for(int i=0;i<Math.max(nums1.length,nums2.length);i++){
if(i<nums2.length&&s1.contains(nums2[i])) s1.remove(nums2[i]);
if(i<nums1.length&&s2.contains(nums1[i])) s2.remove(nums1[i]);
}
ArrayList<Integer> res1=new ArrayList<>();
ArrayList<Integer> res2=new ArrayList<>();
for(Integer num:s1){
res1.add(num);
}
for(Integer num:s2){
res2.add(num);
}
int[] r1=new int[res1.size()];
int[] r2=new int[res2.size()];
int i=0,j=0;
for(Integer num:res1){
r1[i++]=num;
}
for(Integer num:res2){
r2[j++]=num;
}
return r1,r2;//返回r1,r2
}
}