✨今日算法一题
文章目录
裁剪数字后查询第k小的数字
题目描述
思路详解
本题直接进行了排序,采用到稳定排序的方法(代码中已标注)。
对每个询问,按照题目要求排序,取第 k 小的元素的下标。
代码与结果
class Solution { public int[] smallestTrimmedNumbers(String[] nums, int[][] queries) { var ans = new int[queries.length]; var m = nums[0].length(); for (var p = 0; p < queries.length; p++) { var q = queries[p]; var idx = new ArrayList<>(Arrays.asList(IntStream.range(0, nums.length).boxed().toArray(Integer[]::new))); Collections.sort(idx, (i, j) -> nums[i].substring(m - q[1]).compareTo(nums[j].substring(m - q[1]))); // 稳定排序 ans[p] = idx.get(q[0] - 1); } return ans; } }
✨总结
今天练习了数组的相关运算,很多算法也都和数组有关,特别是字符数组要注意转化。加油!!!