• FB面经Prepare: Friends Recommendation


    有个getFriend() API, 让你推荐你的朋友的朋友做你的朋友,当然这个新朋友不能是你原来的老朋友
     1 package fb;
     2 
     3 import java.util.*;
     4 
     5 public class ReferFriends {
     6     public List<String> recommendation(String name) {
     7         List<String> res = new ArrayList<String>();
     8         if (name==null || name.length()==0) return res;
     9         
    10         List<String> friends = getFriends(name);
    11         HashSet<String> set = new HashSet<String>();
    12         for (String friend : friends) {
    13             set.add(friend);
    14         }
    15         
    16         HashMap<String, Integer> map = new HashMap<String, Integer>();
    17         ArrayList<String>[] list = new ArrayList[friends.size()+1];
    18         
    19         for (String friend : friends) {
    20             List<String> ffriends = getFriends(friend);
    21             for (String each : ffriends) {
    22                 if (!set.contains(each) && !each.equals(name)) {
    23                     //map.put(each, map.getOrDefault(each, 0) + 1);
    24                     if (map.containsKey(each))
    25                         map.put(each, map.get(each)+1);
    26                     else map.put(each, 1);
    27                 } 
    28             }
    29         }
    30         
    31         for (String each : map.keySet()) {
    32             int count = map.get(each);
    33             if (list[count] == null) list[count] = new ArrayList<String>();
    34             list[count].add(each);
    35         }
    36         
    37         for (int k=list.length-1; k>=0; k--) {
    38             if (list[k] != null) 
    39                 res.addAll(list[k]);
    40         }
    41         return res;
    42         
    43     }
    44     
    45     public List<String> getFriends(String name) {
    46         HashMap<String, List<String>> map = new HashMap<String, List<String>>();
    47         map.put("Lily", new ArrayList<String>());
    48         map.put("Lucy", new ArrayList<String>());
    49         map.put("Hanmeimei", new ArrayList<String>());
    50         map.put("Jim", new ArrayList<String>());
    51         map.put("Lilei", new ArrayList<String>());
    52         map.put("Poly", new ArrayList<String>());
    53         map.get("Lily").add("Lilei");
    54         map.get("Lily").add("Poly");
    55         map.get("Lily").add("Hanmeimei");
    56         map.get("Lily").add("Jim");
    57         map.get("Lucy").add("Lilei");
    58         map.get("Lucy").add("Poly");
    59         map.get("Lucy").add("Hanmeimei");
    60         map.get("Lucy").add("Lily");
    61         map.get("Lilei").add("Jim");
    62         map.get("Lilei").add("Lucy");
    63         map.get("Lilei").add("UncleWang");
    64         map.get("Lilei").add("Hanmeimei");
    65         map.get("Lilei").add("Lily");
    66         map.get("Jim").add("Lily");
    67         map.get("Jim").add("Lucy");
    68         map.get("Jim").add("Lilei");
    69         map.get("Poly").add("Jim");
    70         map.get("Poly").add("Lilei");
    71         return map.get(name);
    72     }
    73 
    74     /**
    75      * @param args
    76      */
    77     public static void main(String[] args) {
    78         // TODO Auto-generated method stub
    79         ReferFriends sol = new ReferFriends();
    80         //List<String> res = sol.recommendation("Poly");
    81         List<String> res = sol.recommendation("Jim");
    82         for (String each : res) {
    83             System.out.println(each);
    84         }
    85     }
    86 
    87 }
  • 相关阅读:
    Oracle实用SQL语句
    关键字过滤(转载)
    最简单的Cache
    .net中下载文件的方法(转载)
    为SharePoint 2013配置Office Web Apps
    使用Visual Studio 部署SharePoint时提示“路径中具有非法字符”
    TFS 2012 在IE 10(Windows 8)显示英文的解决方案
    为什么使用TFS 2012进行源代码管理——TFS 2012使用简介(一)
    SharePoint 2010 在WebPart页面上调用扩展方法报方法未定义的解决方案
    TreeView结合UpdatePanel使用时,SelectedNodeStyle不生效的解决方案
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/6399921.html
Copyright © 2020-2023  润新知