-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathproblem7.js
More file actions
67 lines (62 loc) · 1.49 KB
/
problem7.js
File metadata and controls
67 lines (62 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
function problem7(user, friends, visitors) {
var answer = [];
var userFriends = new Set();
var score = new Map();
var name = [];
for(var i=0; i<friends.length; i++){
if(friends[i][0]==user){
userFriends.add(friends[i][1]);
}
if(friends[i][1]==user){
userFriends.add(friends[i][0]);
}
}
for(var k=0; k<friends.length; k++){
if(userFriends.has(friends[k][0])){
if(friends[k][1]==user){
continue;
}
if(score.has(friends[k][1])){
var n = score.get(friends[k][1]);
score.delete(friends[k][1]);
score.set(friends[k][1], n+=10);
}
else{
score.set(friends[k][1], 10);
}
}
if(userFriends.has(friends[k][1])){
if(friends[k][0]==user){
continue;
}
if(score.has(friends[k][1])){
var n = score.get(friends[k][1]);
score.delete(friends[k][1]);
score.set(friends[k][1], n+=10);
}
else{
score.set(friends[k][1], 10);
}
}
}
for(var j=0; j<visitors.length; j++){
if(userFriends.has(visitors[j])){
continue;
}
if(score.has(visitors[j])){
var n = score.get(visitors[j]);
score.delete(visitors[j]);
score.set(visitors[j], n+=1);
}
else{
score.set(visitors[j], 1);
}
}
name = Array.from(score);
name.sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]));
for(var l=0; l<score.size; l++){
answer.push(name[l][0]);
}
return answer;
}
module.exports = problem7;