初始算法题 查找数组arr中第k小的奇数,如果不存在则返回0.

这是一道关于算法的问题,要求在数组arr中找出第k小的奇数,若不存在则返回0。题目强调不能使用O(n^2)的排序算法,也不能依赖已实现的排序工具。解决方案是通过插入排序思想,初始化一个新数组,只存储奇数并进行排序。例如,对于输入arr[4,3,1,5,2],k=2时,新数组arr2会变成{0,3,0,0,0},然后通过插入排序找到第k个奇数。若找不到第k个奇数,则返回0。" 39006759,73403,CGLib代理导致的空指针异常解析,"['Spring框架', 'Java代理', 'CGLib代理', '异常处理', '代码优化']
摘要由CSDN通过智能技术生成

查找数组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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值