1. 程式人生 > >拼多多2018/8/5算法工程師筆試

拼多多2018/8/5算法工程師筆試

ins col pub 但是 args clas con 拼多多 mar

給定一個含有N<=100個用戶的朋友列表<=100,對於一個指定用戶,找到這個用戶最可能認識的人。最可能認識的人定義為這個人和當前用戶不是朋友關系(a是b的朋友,b是a的朋友),但是有最多共同朋友。如果用戶和所以人都沒有共同朋友返回-1.

輸入:

5 0
1 2 3
4 0
4 0
4 0
1 2 3

輸出:
4

c++代碼

/*
5 0
1 2 3
4 0
4 0
4 0
1 2 3
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include 
<vector> using namespace std; int n,m; string a[110]; int main() { scanf("%d%d", &n,&m); getchar(); for (int i=0; i<n; i++) { getline(cin, a[i]); // cout<<a[i]<<endl; } int maxs=-1; int mark=-1; for(int k=0; k<n; k++) {
if(k==m) continue; int count=0; int key=0; for(int i=0; i<a[m].length(); i+=2) { int val = a[m][i] - 48; for(int j=0; j<a[k].length(); j+=2) { int aa = a[val][j] - 48; if(val==k&&aa==m) { key
=1; break; } // if(val==aa) if(a[m][i]==a[k][j]) { count++; break; } } if(key) continue; } if(key) continue; if(count>maxs) { maxs=count; mark=k; } } printf("%d\n",mark); return 0; }

java代碼:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;

public class QuestionThree {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int k=in.nextInt();
        in.nextLine();
        HashMap<Integer, ArrayList<Integer>> inputMap=new HashMap<>();
        for(int i=0;i<n;i++) {
            String s=in.nextLine();
            ArrayList<Integer> tempList=new ArrayList();
            for(String val:s.split(" ")) 
                tempList.add(Integer.parseInt(val));
            if(i==k||!tempList.contains(k))
                inputMap.put(i,tempList);
        }
        System.out.println(find(k, inputMap));
    }
    
    public static int find(int k, HashMap<Integer, ArrayList<Integer>> inputMap) {
        ArrayList<Integer> kList=inputMap.get(k);
        Iterator iter=inputMap.entrySet().iterator();
        int index=Integer.MAX_VALUE;
        int maxFriends=0;
        while (iter.hasNext()) {
            Map.Entry  entry=(Map.Entry) iter.next();
            ArrayList<Integer>  tempList=(ArrayList<Integer>) entry.getValue();
            int count=0;
            if((int)entry.getKey()==k)  continue;
            for(int val:tempList) 
                if(kList.contains(val))
                    count++;
            if(count>maxFriends) {
                maxFriends=count;
                index=(int) entry.getKey();
            }
            if(maxFriends==count&&index>(int)entry.getKey())
                index=(int)entry.getKey();
        }
        
        return index;
    }

}

拼多多2018/8/5算法工程師筆試