首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

获取个数质数

思路: 1,排除传入参数为小于2数(if(param < 2)return;); 2,建立有一个元素2数组(let arr = [2]); 3,建立一个初始值为3(i = 3),最大值为传入参数循环...(i <= param),注意偶数不可能为指数,所以循环时候直接去掉偶数,直接循环奇数(i += 2); 4,定义当前循环标记(flag = true); 5,建立一个初始值为3(j = 3),最大值为当前值...(j < i),注意能被偶数整出数就能被2整除,所以排除所有偶数,直接循环奇数(j += 2); 6,判断当前值i是否能被3~i之间某个奇数整除(i%j === 0),如果整除就flag = false...71, 73, 79, 83, 89, 97] console.log(primeNum(3));//[2,3] 注意: 1,两次循环都只用循环奇数,减少循环次数 2,在循环开始就将2排除 3,当前循环标记

1K10

获取数组中最小k个数字_29

思路:利用小根堆 面试或者其他啥情况估计是不允许大家直接用优先级队列,所以我们还是老老实实实现一个堆结构吧; 关于堆结构以及其相应实现大家可以看我之前一个笔记https://www.jianshu.com.../writer#/notebooks/40413732/notes/55370532 我们这里和普通堆排序和堆数据修改有一点区别,那就是这里我们需要先实现一个小根堆,然后每一次拿第一个数据然后把这个数据删掉...,但是我们这里存在一个问题,数组不太好删数据,删除的话要进行一个所有数据前移,因此, 我这里取了个巧,我把第一个数字和最后一个数字交换,然后我当这个数长度减了1,当最后一个数字不存在,然后会进行一个从顶到下重建...,同理第二大数字出来后与倒数第二个交换,当倒数第二个数就不存在了,以此类推。。。...个数实现了(利用大根堆) public ArrayList GetLeastNumbers_Solution(int[] input, int k) { ArrayList

39610
领券