全部评论
第二题有知道怎么做的大佬吗,分享一下代码呗
public static ArrayList<ArrayList<Integer>> combinationSum (int[] prices, int m) { // write code here ArrayList<ArrayList<Integer>> list = new ArrayList<>(); boolean[] flag = new boolean[prices.length]; dfs(list,prices,0,m,flag); return list; } public static void dfs(ArrayList<ArrayList<Integer>> list,int[] prices,int index,int sum,boolean[] flag){ if(sum==0){ ArrayList<Integer> l = new ArrayList<>(); for(int i=0;i<prices.length;i++){ if(flag[i]) l.add(prices[i]); } if(!list.contains(l)){ list.add(l); } } if(sum<0||index==prices.length) return; flag[index] = true; dfs(list,prices,index+1,sum-prices[index],flag); flag[index] = false; dfs(list,prices,index+1,sum,flag); } 自己造了几个测试用例都没问题,但a了0.....是因为list没排序的关系吗。。
同
第二题自己输入测试没问题,用的是回溯,提交0ac,是时间复杂度超了吗
第一题有没有54%的。Python也没有long啊,是哪错了吗
第一道题是不是先把两个字符串转换为全部小写或者全部大写,然后求两个字符串的最长公共子串呢
public static ListNode lineUp (ListNode head) { if (head == null || head.next==null)return head; // write code here ListNode node = head.next; ListNode jishu = head.next; int flag = 2; StringBuilder s = new StringBuilder(); while (node != null){ if(flag % 2 == 1){ jishu.val = node.val; jishu = jishu.next; } else { s.append(node.val).append(" "); } node = node.next; flag++; } String[] strings = s.toString().split(" "); for (String string : strings) { jishu.val = Integer.valueOf(string); jishu = jishu.next; } return head; } 这是我第一题ac代码
老虎的题不用自己写输入吗
第二题先排序,再计算的,一直是80%
相关推荐