例如:给定 nums1 = [1, 2, 2, 1],nums2 = [2, 2],返回 [2, 2]。
- 依题可得的解法
function intersection(arr1,arr2){
var arr=[]
arr2.forEach(arr2Item=>{
var index=arr1.indexOf(arr2Item);
if(index!=-1){
arr.push(arr2Item);
arr1.splice(index,1);
}
})
return arr;
}
- 先排序,再用双指针遍历
function intersection(arr1,arr2){
var arr=[]
arr1=arr1.sort((x,y)=>x-y);
arr2=arr2.sort((x,y)=>x-y);
var i=0;
var j=0;
while(i<arr1.length&&j<arr2.length){
if(arr1[i]<arr2[j]){
i++;
}else if(arr1[i]==arr2[j]){
arr.push(arr1[i])
i++;
j++;
}else{
j++
}
}
return arr;
}
3.Map结构 ,没啥优势
function toMap(arr){
var mapArr=new Map();
for(let i=0;i<arr.length;i++){
let num=mapArr.get(arr[i]);
mapArr.set(arr[i],num?num+1:1);
}
return mapArr;
}
function intersection(arr1,arr2){
var arr=[]
var mapArr1=toMap(arr1);
var mapArr2=toMap(arr2);
mapArr1.forEach((arr1Item,key)=>{
var arr1ItemCount=arr1Item;
var arr2ItemConnt=mapArr2.get(key);
if(arr1ItemCount&&arr2ItemConnt){
var maxCount=Math.min(arr1ItemCount,arr2ItemConnt)
while(maxCount--){
arr.push(key);
}
}
})
return arr;
}
1.token加密主要是用来做客户端和服务端的用户信息校验
2.服务端生成随机数,用户登录会将随机数告知客户端,并自己在缓存空间保留一份,每次客户端发送token,
服务端会对比缓存空间是否有此token,来判断用户是否存在
3.当确定token存在,进行下一步校验…,最后通过token拿取客户端需要的信息
4.加密方法:JWT,AES,DES…或者直接随机字符串