第一题66%(不知道为啥),其他两道都过了
public int[] solution(int[] costs, int coins) { int[][] matrix = new int[costs.length][2]; for (int i = 0; i < matrix.length; i++) { matrix[i][0] = costs[i]; matrix[i][1] = i; } // 根据价值排序 Arrays.sort(matrix, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { if (o1[0] != o2[0]) { return o1[0] - o2[0]; } return o1[1] - o2[1]; } }); int index = 0; ArrayList<Integer> indexs = new ArrayList<>(); while (index < matrix.length && coins >= 0) { if (coins >= matrix[index][0]) { indexs.add(matrix[index][1]); coins -= matrix[index++][0]; } else { break; } } // 排序下标 Collections.sort(indexs); int[] res = new int[indexs.size()]; // 将下标转换为值 for (int i = 0; i < res.length; i++) { res[i] = costs[indexs.get(i)]; } return res; }
第二道:
public static ListNode Rotate(ListNode head, int k) { if (head == null || head.next == null) { return head; } ListNode dummy = new ListNode(-1); dummy.next = head; // 遍历链表 ListNode cur = head; int length = 0; while (cur != null) { length++; cur = cur.next; } k = k % length; if (k == 0) { return head; } cur = head; ListNode pre = null; // 找到断开的前后节点 for (int i = 0; i < length - k; i++) { pre = cur; cur = cur.next; } pre.next = null; dummy.next = cur; // 让cur指向旋转链表的最后一个节点 while (cur != null && cur.next != null) { cur = cur.next; } cur.next = head; return dummy.next; }
第三道:
public static String reverses(String original_str) { // 每个元素单独处理之后拼接到一起 String[] splits = original_str.split(" "); StringBuilder res = new StringBuilder(); // 每次循环处理一个 for (int i = 0; i < splits.length; i++) { // 存储初始字符串,然后变为修改后的字符串 StringBuilder sb = new StringBuilder(splits[i]); // 存储小写字母然后反转之后修改sb StringBuilder reverse = new StringBuilder(); // 获取sb中的小写字母并修改成『.』 for (int j = 0; j < sb.length(); j++) { char c = sb.charAt(j); if (Character.isLowerCase(c)) { reverse.append(c); sb.replace(j, j + 1, "."); } } reverse.reverse(); int index = 0; // for (int j = 0; j < sb.length(); j++) { char c = sb.charAt(j); if (c == '.') { sb.replace(j, j + 1, reverse.substring(index, index + 1)); index++; } } res.append(sb); res.append(" "); } // 去除最后一个空格 res.deleteCharAt(res.length() - 1); return res.toString(); }