第一题只有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)); } }
全部评论
(2) 回帖