查找数组arr中第k小的奇数,如果不存在则返回0. (arr[i] > 0 (i>=0))
计算出时间复杂度(注意代码注释,不要用O(n^2)的排序算法,不要使⽤库函数或脚本中已经实现好的排序算法和⼯具, 需要⾃⼰实现数据结构和所需要的算法)
格式:
public int findKth(int[] arr, int k){
//代码
}
示例1:
输入
arr[4,3,1,5,2] k=2
输出
3
示例2:
输入
arr[4,3,1,5,2] k=4
输出
0
题解:
利用插入排序思想 排序新的数组
初始化一个新数组与arr同长,并将其中内部的元素都为0
例如上面示例arr数组为{4,3,1,5,2}
创建的新的arr2数组初始为{0,0,0,0,0}
那么进入第一次循环,判断是否为奇数
将对应index 的数放入新数组进行排序
判断排序 因为arr2[]中的所有元素都为0所以按照插入排序(asc)的排序
第一个值插入后会造成这样的结果{0,3,0,0,0} ,“0<3”则不进行排序,增加判断 让其arr2[]进行判断 让所有的0后置
public static int findKth(int[] arr, int