富途笔试
第一题只有C++,没办法,试了输出“false”通过40%,输出“true”通过60%;
第二题,输入都没有描述,代码没通过,提交完又改了一下,算是勉强符合我的预期;
import java.util.*;
public class Solution {
/**
*
* @param paths int整型二维数组
* @param happy int整型一维数组
* @param root int整型
* @return int整型
*/
public int maxHappy (int[][] paths, int[] happy, int root) {
// write code here
int res=0;
Map<Integer,Integer> map=new HashMap<>();
List<Set<Integer>> plan=new ArrayList<>();
for(int[] a:paths){
map.put(a[1],a[0]);
}
map.forEach((k,v)->{System.out.println(k+"->"+v);});
int tag=1;
for(int i=1;i<=map.size()+1;i++){
Set<Integer> list=new HashSet<>();
int flag=0;
while (tag<=root){
if(flag>map.size()+1-i){
break;
}
if(!list.contains(map.get(i+flag))){
list.add(i+flag) ;tag++;
}
flag++;
}
tag=1;
plan.add(list);
}
for(Set<Integer> li:plan){
res=Math.max(res,sum(li,happy));
}
return res;
}
public static int sum(Set<Integer> list,int[] happy){
int sum=0;
for(Integer i:list){
sum+=happy[i];
}
return sum;
}
public static void main(String[] args) {
int [][] tree=new int[][]{{1,2},{1,3},{2,4}};
int [] happy=new int[]{0,5,4,2,3};
System.out.println(new Solution().maxHappy(tree,happy,2));
}
}

