// void help(int[] a,int l,int r,int k){
// if(k==0) return;
// if(r-l+1 <= k){
// for(int i=l;i<=r;i++){
// ans[cnt++] = a[i];
// }
// return;
// }
// // 快排的基准值
// int base = a[l];
// int i = l, j = r;
// while(i<j){
// while(i<j && a[j]>=base) j–;
// while(i<j && a[i]<=base) i++;
// if(i<j){
// int temp = a[i];
// a[i] = a[j];
// a[j] = temp;
// }
// }
// a[l]= a[i];
// a[i] = base;
// // 小于等于基准值的个数
// int num = i-l+1;
// help(a,l,i,k);
// if(k>num){
// help(a,i+1,r,k-num);
// }
// }
// public int[] getLeastNumbers(int[] arr, int k) {
// ans = new int[k];
// help(arr,0,arr.length-1,k);
// return ans;
// }
// }
// //手工建堆
// class Solution {
// int[] ans,a;
// int n;
// // 维护小根堆的性质
// void down(int p){
// if(p>n) return;
// int left = 2p, right = 2p+1;
// int min_idx = p;
// if(left <= n && a[left]<a[min_idx]) min_idx = left;
// if(right <=n && a[right]<a[min_idx]) min_idx = right;
// if(min_idx != p){
// int temp = a[p];
// a[p] = a[min_idx];
// a[min_idx] = temp;
// down(min_idx);
// }
// }
// // 在本题中用不到
// void up(){
// }
// // 建立一个小根堆
// void buildMinHeap(){
// for(int i=n/2;i>=1;i–){
// down(i);
// }
// }
// int poll(){
// int top = a[1];
// a[1] = a[n–];
// down(1);
// return top;
// }
// public int[] getLeastNumbers(int[] arr, int k) {
// n = arr.length;
// a = new int[n+1];
// for(int i=0;i<n;i++) a[i+1] = arr[i];
// // 线性时间复杂度建堆
// buildMinHeap();
// ans = new int[k];
// int cnt = 0;
// while(k–>0){
// ans[cnt++] = poll();
// }
// return ans;
// }
// }
// //优先队列
写在最后
可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。
上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源
间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。
[外链图片转存中…(img-ozGB6z2v-1719491337210)]
[外链图片转存中…(img-zatowGwu-1719491337211)]
上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源