一道算法题:查找数组 arr 中第 k 小的奇数
2021-03-22 01:27
标签:down main 注意 void 脚本 ndk 存在 ring 数组下标 查找数组 arr 中第 k 小的奇数,如果不存在则返回 0. (arr [i] > 0 (i>=0)) 计算出时间复杂度(注意代码注释,尽可能不用全排序,不要使?库函数或脚本中已经实现好的排序算法和?具,需要??实现数据结构和所需要的算法) 一道算法题:查找数组 arr 中第 k 小的奇数 标签:down main 注意 void 脚本 ndk 存在 ring 数组下标 原文地址:https://www.cnblogs.com/deppwang/p/13894201.html题目描述
解题方案
思路
计数排序
代码
// Java
class Solution {
public int findKth(int[] arr, int k) {
if (k == 0) {
return 0;
}
// 统计每个数字出现的次数
int[] counter = new int[10001];
for (int num : arr) {
counter[num] = counter[num] + 1;
}
int x = 0;
// 遍历 counter,查找第 k 小的奇数
for (int num = 0; num 0 && x
测试代码
public static void main(String[] args) {
int[] arr = {1, 4, 23, 2, 6, 9, 13, 5, 45, 12};
int k = 3;
System.out.println(new Solution().findKth(arr, k));
}