题目要求
题目链接
《查找第K大/小元素算法》
这题不使用线性复杂度算法是过不去的(除非你用C++的[内置函数]or[快读+sort()]) Java应该是不可能过去的,你用C++可能卡在T上,Java还没到T呢,M直接卡爆了,顶多60分水平吧。
下面是Java版本,线性复杂度,尽可能优化,60分:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 线性复杂度算法
* 该算法的C++版本可AC,但Java版本就会MLE/TLE
* 该算法C++版本跑的比nth_element()跑得快
*/
public class Main {
private static int[] nums;
private static int k, num;
private static void swap(int left, int right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
private static void sort(int left, int right) {
int left_mid=left, right_mid=right, mid= nums[(left+right)/2];
while (left_mid mid) {
right_mid--;
}
while (nums[left_mid]
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?