和414的题是一样,我就是想用一下bfprt。可以代码一直有问题,下面第二个死机。

class Solution {
public:
void partition(vector<int>& a, int left, int right, int &less, int &more)
{if(left>=right)return;int cur = left, index = right;less = left-1, more = right;while(cur<more){if(a[cur]<a[index])swap(a[cur++], a[++less]);else if(a[cur]==a[index])++cur;elseswap(a[cur], a[--more]);}swap(a[index], a[more++]);return;
}int findKthLargest(vector<int>& nums, int k) {int less=0, more=0, left=0,right=nums.size()-1;k = nums.size() - k;while(left<right){partition(nums, left, right, less, more);if(k<=less)right=less;else if(k>=more)left=more;elsereturn nums[k];}return nums[left];
}};
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
#if 0
int medIndex(vector<int>a, vector<int>index, int left, int right)///<返回数组中位数的下标
{for(int i=1; i<right-left+1; ++i)for(int j=i; j>0 && a[index[j-1]]<a[index[j]]; --j)swap(index[j-1],index[j]);return index[(index.size()-1)/2];
}int bfprt(vector<int>a, vector<int>index, int left, int right)
{if(left>=right)return right;vector<int>vecbfprt;for(size_t i=0; i<index.size()/5; ++i)vecbfprt.push_back(medIndex(a, index, i*5, i*5+4));if(0!=index.size()%5)vecbfprt.push_back(medIndex(a, index, index.size()/5*5, index.size()-1));return bfprt(a, vecbfprt, 0, a.size()-1);
}
#endif
///<获取闭区间[left,right]范围内中位数的下标
int getMidIndex(const vector<int>mapa, int left, int right)
{vector<int>index;for(int i=left; i<=right; ++i)index.push_back(i);for(int i=left+1; i<=right; ++i)for(int j=i; j>left && mapa[index[j-1]]<=mapa[index[j]]; --j)swap(index[j-1], index[j]);return index[index.size()/2];
}int bfprt(const vector<int>mapa, const vector<int>index)
{if(1==index.size())return mapa[index[0]];vector<int>newIndex;  for(int i=0; i<(int)index.size()/5; ++i)newIndex.push_back(getMidIndex(mapa, i*5, i*5+4));if(0!=index.size()%5)newIndex.push_back(getMidIndex(mapa, index.size()/5*5, index.size()-1));auto bb = bfprt(mapa, newIndex);return bb;
}
void partition(vector<int>& a, int left, int right, int &less, int &more)
{if(left>=right)return;vector<int>vecbfprt;for(int i=left;i<=right;++i)vecbfprt.push_back(i);auto x = bfprt(a, vecbfprt);swap(a[x], a[right]);int cur = left, index = right;less = left-1, more = right;while(cur<more){if(a[cur]<a[index])swap(a[cur++], a[++less]);else if(a[cur]==a[index])++cur;elseswap(a[cur], a[--more]);}swap(a[index], a[more++]);return;
}int findKthLargest(vector<int>& nums, int k) {int less=0, more=0, left=0,right=nums.size()-1;k = nums.size() - k;while(left<right){partition(nums, left, right, less, more);if(k<=less)right=less;else if(k>=more)left=more;elsereturn nums[k];}return nums[left];
}int main(void)
{vector<int>a={3,2,3,1,2,4,5,5,6};cout<<findKthLargest(a, 2)<<endl;return 0;
}

第K小的数是从1开始的,没有第0小的数。所有数没有重复的,如果有重复的可以用hash_set去重。

1.方法

法一:

这个方法不仅简单而且效率高。用类似于解决荷兰国旗问题partition问题的方法。随机选一个数作为划分值,小于这个数的放左边,等于这个数的放中间,大于这个数的放右边。假如等于区是200~500,我要找第300小的数就直接找到了。如果我要找第700小的数,就把大于区递归重新分配一下。

时间复杂度是个数学期望,结果是O(N)。最好情况是小于区和大于区大小一样。

法二:

BFPRT算法就求这个问题时间复杂度是稳定的O(N),连期望都不是,它就是在选择partition问题的那个数的时候做了文章。法一中选择那个数不是随机的嘛,所以产生了期望,如果我要是能用O(N)的时间找到一个不会偏缀的数,结果就稳定了。BFPRT就是在找这样一个数。

因为不管怎么找结果肯定不会错,顶天就是偏缀嘛,所以只要证明我找这个数的时间复杂度是O(N)就行。先说方法,再求时间复杂度。

2.操作

1)先把一组数每5个一组分组,分成N/5组,最后一组如果不满5个也成一组。其实这步其实没啥实际操作,就是变换下标而已。

2)每组的组内进行排序,组间不排序。

3)把这N/5个数组的中位数拿出来单独形成一个数组。最后一组不满5个的拿上中位数或下中位数都行,不满5个的组只有一个,完全不影响复杂度。

4)找着N/5个数的中位数。这里找中位数是递归调用BFPRT实现的。BFPRT函数的格式就是两个形参,一个是数组arr,一个是第k小数的k,返回值是数。int BFPRT(vectora,int k)。假设N/5的数组叫做arr,递归的时候可以写成BFPRT(arr,arr.size()/2),中位数嘛,所以一定是数组长度的一半。这个中位数记为

5)用这个进行partition。

6)如果命中K了就返回这个数,没命中就选择一侧走。

3.复杂度分析

1)O(1)

2)O(N),因为每组内只有5个数是O(1),一共有O(N/5)个数

3)O(N)

4)T(N/5),因为是N/5个数进行递归,找到中位数p

5)O(N),单纯的partition过程

6)判断是走左边还是走右边,用了BFPRT以后,左侧和右侧的规模就能够估计出来了。

估计的时候肯定是要估计最差的情况,最差的情况指的就是小于p的最多能有多少个数,这个不好求,可以变成求最少能有多少个数比p大,N再减去这个数就行了。怎么求,看下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sfNmHbJa-1633870437089)(data:image/jpeg;base64,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AAAAABEREREREREREBAAB6kRAACQBRAeul4H7+UKhP/aAAwDAQACAAMAAAAQ99999999999999999999999ttNtNd9dNN9N9tcPdd9999999999999999999B9R999999999999999999999999995x19999999991599999995BF19999999B55d999991199999995119999999995V99999999t1l9999999VVg99999999Btl999999xt999999959199999999Zxd99999999txl9999999tNd99999999B9x999999lN9999999d9d999999991V999999999999999999995x99999999B9l999999pV999999999999999999599999999991lx9999999995V9999999B91999999t9999999999199999999ZN999999999dFV99999999ll99999999B9F999999519999999t5199999999hVd999999999t9999999999999999999B9V99999tJV99999995l999999999td999999999999999999999999999999B9V99999tB999999995511155NlFJBhBNWVlxFDSNkMxcMcdVhje+31999999B9x999999dRxhtJV5JVNd9dd9td99999999997RF951999999tfnn9/F99999B9l99pxdRBdNN99999999999999995x99999uIc9pV119999999tV95M59999B9519Rt99199999999949999999995h99996h/wDfabZcfffffffRQfQTT8PffQfbdfZffUeffffffffbXXfffffffffbfffdaPfffffffffffffeN/fbfTa3/fQfbVfUffZfVffffffffffffffccfffaadRi85WbdbYaVddedeeZN8eXffbs9fQfaXfdffQeAcYJRSeTWWbbcXQZbXfZfezjPffffffffbbfTTbfTSQZffffWUdQfaXfWbdbbfXffffffffffffffffusVHffffffffffffffffffeedffffffQ3wfaVfffffffffffffffXffffffao7vWPffffffffeZVfffffffbWfffffffebQ/VfffffecdfffffffRBffffffQfPXcXffffffffSSdfffffffefffffffffegfVcNfffRbffffffffWdfffffaFPffffffffffffbTffffffffffffffffffRgPTeffffWfXffffffffffffffadvffffffffffffffffffffffffffffffffTgPbXfffffffffffffffffffffbPfffffffffffffffffffffffffffffffffUzffffffffffffffffffffffffbvffffffffffffffffffffffffffffffffeF/feXfffffffffffffffffffffZdvfffffffffffffaRffffffffZR1ffffewHffUbXffffffffffffffffffffbzdPcUffffffffffcDffffffffQbdffffV9vfTbdffffedffffffffXUffffffbrffbffffffffffXffffffffbTbffffWxvffffWffffdTcfffffffRdfffffffbU+UavNMs9ffffffffffffffffffeFtfffffffffffeUZffffffffffffffffffffXr/rHQ06504zzzxyzzzxxxyxsfvfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbP6WFJr3fffffffffffffffffffffcdffffffffecSbZPffffRWfcffffffffZoRmu0DNffffffffacffffffffffbbXffffffffcWbfdffffffffffffffffff5USucQROXWfffffffVdfffffffedffffffffffcXUfeffffffcaMdfffffffRlOfOvlxTfffffffbTQXffffffffXTfffffffffSfeRTffffffSeWXfffffffRgKQnE21fffffffffffffffffffeZaWffffffffWXTWdfffffZRbYeeffffffdEf6gFeFfffffffffffffffffffXXfffffffffffTfffffffffbbTXfffffffYoIIYYIP3Ioo/I/f4w4wnHvgooQ333wwwww//YQ/gP8A3/7z734IMH0H0CAL4AD/xAAqEQEAAgEBBwQDAAMBAAAAAAABABExIUBBUFFhgfAQcZGhIDDRYJCx8f/aAAgBAwEBPxDgtEW8/wCiQINrMKUwlNe86/zvOr+/7Ov+/wCzrfv+y9bU+Y6gZ8/yGiEee03T+o3xsd2sHinvC7ZYpjhoAI36g8vOU18H9VsMRmGfyx2xQpQQSq94ZFyuFHztZf8A5zy83RVbdh3Z3D59Tdr3PPhAA7WXTy/qP3tdiNNYK1+TG+Dc8+DVKtmfbg5Rq9r+4FaJXqn8TSOMTDHec4GruOe6B695E0Bj7jpbf3ijZL9W/kTzkozzDnErR28jJVDm6Q1K6UM+Giq27SH7hzgzqnR23ViYBWHKOmseb5cvCg5G2lui094zym1mt9AGEMu+41bbt6ZQMVhztYHfT8+4qtvARuvL+tqvrey3PIOOIzGCK63t8cWks8DxcXp7TXjfehw1YfRY2q9+hjUdTgBs7WX3vM2tyyE8qvz6iUqTbgvQmdZaHKIWtdsMLSQ7pbkJLV8227g5hzY129zzoM5mcyOpH2Zrmo6R0S/hnVfDEWkZ0NkRUZlzqNxvYm7DBwIUxH7T/v8A2ANUe09v4hvE7T/xpgMm6X1/JjfDMRZ57ylrY9Iu3/O06nztOp87TqfO06nztOp87TqfO06nztOp87TqfO06nztOp87TKU+e0pfMZqTf4GKGPSpUTSWvi5MPQ9MJv4vUWkv0XTSoZhxZRmEqWmlmSDXi9JgoPfMgiusspxgzlBcNWmEEQgkqnjAm6jpGmXo+pFTAoIK8Ageh6INIYuONYuEQxD0Y5iX+dy5cuX++5fpf5f/EACYRAQACAQQCAQMFAAAAAAAAAAEAESExQEFQEGEwIFFxYIGQkaH/2gAIAQIBAT8Q6XKKKuX+CRQLZY0blvieyeyeyeyYyjiVRXrHuocxCQnMA6PWmbYLvAglD46GXcRbiPG1EEMM6nVKC2BvaJpsUknYdQoFvgAFGzUgVh0wlsVKIAUfOAs+peB5gCzo9fZpBLMq4AFGwAUfUglMbxz0PNzg4IfOTugoYg8hvRbUXgL8M083qIHEAWbsWXiQBg39wogL43f4s6L/AH3V6zO8veNYDmCiu8eRdGqw4mO7n5SZp1ZbuUoHEOp0CBbA8IabtLKfAALN+mpogAUbxBKYr4PtPzu9X+7g1G/zejOavw5XMG5nulks2lkdTpZ16N1R5L3s9zLGilWk0aRVH7Jf2HyySSSSSeqcliG0P0ILmXL8BtmK+41eG/GlNHbjHKBKMrzNCaO3MeRmZ4l7fEWvBEa0lVou3UbcrFxQy3Bgss7dhh9oIeBj4XEVytUUNQ1iZl+DbKzUN4lYuG2OHwaXBCu4r5P/xAAsEAEAAgECAwcFAQEBAQAAAAABABEhMUFRYXEgMECBkaHxEFCxwdHw4WBw/9oACAEBAAE/EPt3Mgqc41nK9UOF6pyvVP8ARhkx6pfO+owEACguJcTikGQ7gQWNUjD41QG0CNPVDAtbcxcRKPONkngjR5AXCUg5wEoPVGrVBo86iwVU0Zgq/N5ZyPVG1Ry5EWVjrcKmGmYWWquzCZ5uNTod2XKG2sZL7w5ystgUDgfZ3SW4/wDuNbp2L/8AQ2pAcWWIE4kGot1ogh6oWaGwysngNbp2KnS4cc1FZ1BfuyhqywLUrjKodqQzU0eLJfhNJVvOFfMVtqzX9KbCoau0E8Awkpus9IhpReXNQAC7pHsUPirLirgk7fs7/W6fWizqWZw0VXzl6bT5I7iBn7pVELnWU9FwNoqCQall5ZVbrGtLbvLwZtOonWA7Xr4vCbyRIhrCoKI1E6UF+HfrSZUS2aeUAA0CvofE1qsGdCCdcs5Nvo7/AFun0eWhE6wMPPtaDhE2EZjEMDC9pxKWHHeWcYvW+bMWDO7V8CDwH3Qjk1GVm4WcOMixz4raUvglHLsBvMXbqMrCxQLiUAhYud2V+fgw8++GV93IUC1xBwFaDoR0BSXw79LREV3V02ZQddXpj5RmFuXrtRZb1gAQ9q+Aa3T6Xu5sg5Dr4zFZq0JGSt0e8U7WBKynWiuIlc1v6oL0OXWKzsPfkxoFy9NSzaiGoFwFju4mmZQjIt4CGngUzbGQDNAr6H3qqXkI9AXF8PBmHb1FMoqpJb08Myww22GuBhBoDwDx0f8AqjJK+MsQFDcEMHOZnwOt07C0NUHFHYIVHbvDPQVCOX5YSh5Q/CUATWF+xORAO/cTUb2gkbND1YewBaZ5pRQrbhZEBXU3h4LRQlGGkKCpi2WVOFvkWgeBAHhKcLhZLmHiCACgo+y63Ts6d4QwpMPSVlgUDTBITFaKqv4kCg7829H9RDCWmEayzlGBG2DQ00AdBDZCGDwT+lLGpCCgAWo6xAkuUICA1w08r981unYC46pwhClV94sHDi/aBkAhKELmjG0Bm6Wl4r4Hgy8GvWIhC7asOGAzufBggCOzHD7bukNkWwrw9+EEATd1iwqbmNqdVXSHfLYb9/rdOxbwZOaHeDyG2rhKuQ2MiQIBFXaEWiNW++i6UBaxC51PPA4nzSqqHm8++BecxM8JRoZEd6shynFBTpuKhempuDUWGeHf63TsC14GWPl7wYbAMRjS79OU1v8AA7YKkAAD7ObZ/NU5bMBDPg6wLWr4wWayA4SpV2aQhRxrVUiMA0NDe8yPAHUjV9ZVBQFdJcEthpeYD24I2+Xmvf63TsafTPZ+9QdSAGhX2dogDz4CpTimgS+2qxNwt3CxF8HnvSCnCUA2bDjLozDysgujBIVgd1h4AsAXqocVmW0c4sYnG/CDMyr9Q+GvIQ7/AFunYF9Jivo/sIgB77zCrvdu6w5CIPgjutAcTeCBKKDl9KiV5lmKw7ngt2QtwdogZa2CuTLcNLMsciG01wLwtY8Eh7wRG2OQgCgBy8DrdOxceAlw+wGgQdBdYnZvuJlEZUNbiy2lPBPaQMXjmCFgB6Q19tlmIVpuADiCgeDFrpoy8F4hgAUFH2bW6di8cAywcx3tlVwXMLX5oFq4IBGx8DWbgAaOcWgTU5zCoKGORBMpfe8Ew+gAZqGqCVapEiWhpVzlPSd8z75rdOx0bTOhlO8XwTSzVgldrVoEZi1JxrMZvsJ1Q8C+gRSaQoAyTIYdFDOFXlgI0EHgnYitRiZsLDoZZ770z991unYqNaXlF4LvHsUgHODuJxZWUbtL36RNXGh5vgRZFSJEOwXc4iJrW10/8lrdOx1MzkGvx3gBTBNukNJTSpB1qJDxWPn425ZxJzCYf2Sr+k+Tlf8AFEdfSRPX0UR19FENfSxHX0sR19DEdfTRCJP6JiElP0mKvoAfOT5efLz5ufJxH+8r/tEoirUNxcBjt0KPeGVzaAE/3P5OH/h0mPc/zhMf+HtM3+HtP9j+T/Y/kzvkf4R7qU1vZ8yRAH8cP08bsS9TqSV29U5tM6n0NNYnlnt0CaE3Rl8/B63Tsc0vwTXWp3jcUWDYme+D1mKcoi7kxsIdV8DTdPWOiHVmkfqJoP8ALLTScIsvSS38nJbz8i11Zd0HrNuujmhjpDpDfCNu+mof3U3Q+eGs9VDVeshr/UQ1XrYa71kNU/VD+xw1h9UP3Aw3fWYLqfeCaj3hviG57JxPZP8AQh8ac56TnvSc56S/F6QXH6Q4n6TielLN06BfQIuAHFv1HhFN5T5x4q7BgW8Te9HD/mobnpobvoIf80h/ziG77E4vt/yOC45gz4p/YIKF3/4z5PMH70os3rd0lOLwzx2k5CLGirvl/IKsZ0ZB6GbikVvll5qdOFWNlCajW4EpjxHKk46qAjoKDRftAyhoqxhnvdbp2Oepe0ztud4elaQsSN4utJiAkA0DSGCjTs6KurLbDcRLGvUWFp0Zd0+gmnvK+hRQbXnH377NA3DFy9HOji/DuPFC+GJoVviiaCr4k08Oqn6RhR5UT35WVt+ezVh1Jp18s0X9BNAPQQ0gxX/CU4Eo4SvDXKMqoOR8X+RYMoVgfom4lVbLyP7A5FoCg8HU+KiKlDgk2v8AR0miQVf6EfG3iRiCgf7ylFKcD90sEdx59I08WUNe0qStKUPJgAdDbAweFgDQcTu9bp2ObjPacjrV598HYXOLKjXCLEX5ICzhjDiHbSrRKiHkwfZB4omaBfEZth0zN0+h9BL31GfsBmnr1J+pWUNbyTTr0MGwOggWgPKUH2XMw4Vp3DnF90aZivLiw4YGhlcXs9MvWUqnmy+8b2eCUC1A5zmc1jgNlQSet1c2iSgepC0t9bMztunqnaUg2trA3IMEhE25d1rdOwKXFR7fafftE9gnmYqOI+ihqhHgs4iUKhbZy9wIYZRLpbFebCJWDtqDcqVnrKalm+UE0blhFdOIAbH3HhJQe9F9RbOry6sK2dAUdlYYWV1YgWrFockZg6TXwdGuOkNEwF35+B1ZgNUqbJdrE0qlYOTwTYZ2jWWYJ9cDFnUYlR9gtp1Zv9Yd3HpxgsSFib9zrdOxkzlFs9+0EalJ2mHMNiWFK9FzOHFFUrU9V8oFO5FCgG+cHDzgIDQH2dsYC1Zaq1NaQQLB1WkNOW8bd4uADXyv5G9Z97X8oUC5ttVx7T9Asx1h5SoNMuPopYBexUtGMDRKwAZVyD08BupfB5QAAoCj6P5SYZSYe+sv6paREHWKIWPVYJVtxGt3OUrFHQ+el5RAFCOidxrdOw6TB6ZfiHYulF7msIxsJZTEIRucJMk3bQOj+SpXh8VfPpT0+Uvg2ADtjkIsrKOO8CgGRLGEhXSnu0WhFvu8CBSpABg/oIvLWU1X+dtdYBXbNwoUWxSNRiKPGWXVpVamXZWGb2QFLruqCXcVlpXK+Uw9+pp6YXDEATNcY8bpCFsol1M1QR4DQH0IEMTC9dQaUOIADAFEDAKkLElnkhbt/IvPQF/xUAOtosSHa1unY2nAIP2hp2HRjqci+x2xHR8GEDSucyyctgAkQuDtq9ngnXgAjhBz3SJfG5d4VTch6vdJSNaszwpVbyy7fyIcKpkP8HcAQHSMSEjhbQwsjk3Qoc9mZUQAvENo5Rmlbe/cJeolka2bWio0KxvANADgfXh+gOEOv9S1r6oQBHUZQFOReo5TENWVhcHhBEsydrW6dkf7DMdty7HKxMsPOq8+yCJoC2ZI2o5zyh0Ky9YKKLWxBMlYl+BsmraOaXyDFiqjh0dQgNVPBOnU+aLXEHpiNNlAvzDoCF8zuTxFGrl8CXibCq2k0GB0fY5fY0+BiWX/AFlyowyaCgOwSIVImEjriOEz/wATDcZW9urta3Ts7G2hcPmxfbsZyq17S3d632VCoMHrLPmVS6eMSBWgdYrRrBd48BLZdK8CHRS+WOiL0OkVhhUM5WACV+A8H0k1zKAxxDPcKC1ol+lHReYx4K4eh/RFqhKa4HA8dd4BOAQvxrpqzj2bqvpjWppJ1yZrtBKWRuM2ww78Qj4pNd618+zrdOz0+b85zVb27GSqqFNXndlCjguFmYQ9Yc8tARBaQqx8jRWdfAkoIlPB2YOYrZt0iDTkGrAorwtnElWz1lWvqSqZDX0EYChapKidE4zo/wBicM0KnoJbpWB3ORtEyN1S9RlH8cp/nlf8cq/jlf8APKtfSyj+GfCZ8ZnwmCOPQw03p5qR8s1deWamvJBdE84Js9YJx727gAcRlPwVlUcOwTjgLY3CZyUOYJoIDtg+gZWw/ukPlOAD/aMvPWDly7Gt07RvJ+v4uxcL1rKmms9kQ7dTmRoJQNSlxItAcbhgFta6I7/Q3rXgqKxNHJA4xsO6s4yjUHnNDPUT3HjNJnll7Z6Mtab5EvPS4K7PWXFXnNnjk2aHurHT5embwz51DXuc3zrTGvQ3mWEbPmLKQ1BT1l73o0PKM2XlSCan1wXU+uCah5obvrIPr6ycf1mcX1GG56jDfHvOT95y85GJaH3gv2GP7CTdLo5qZ6KOr9cJNGKvOGqVcbzVVXFzWt6uaNvmIb9E2u6T8IU96clPj1E08urNR868PJNRXQzUF0gbT1IPp6k5h6ynEhOAkLzbLHjU3ubx7ojyOsa1YV9eJX5h7B2G59dbp2eX0zpmdhOYSA03t9+ygiMbQ7YVbyjyo0uv3FKaHdLCVCoCIapNAfVmlTqZoc8s/XLEokpHUetHXetEojQSqrrNNkOwpTvDxJkR2W6M346TR+kJ+JiGibgdWaJnnLSs8mYwl8FNAN8FLWgvqQzxXHIZnFzIEm8nofT79/NhZT9fove0QZoJ6CB6A8ozqUJ7BC2o77p+pbdwI0Or+phIM6R5sMm+lLwtRTYx1D8pqr6ia9fLLH2qa+XQlxXlMvvQP0JttepNIvMmtzhlipsejjrv0UdaOk7JfnOFi9FeiOTwLVghRmgvF7pUCwdzjXCOoulr3fVrdOze61UtvCvYCiqNHKC4UQ4Z+rrAdWFqKcTLW2myuWgmcCXUU2WI0A2pM0tjxJsgHkk0KXxjSp1UzpEPMNz/AICHE/SfwKfxuG/6E+In8Kn7uJbZek5j0guL0luP0nBXpP8AIn8MgdV5So9Snv7M/f00hup9DLQ/5Zph6CA4fQgGgdyLYHVhV1dgX10mVGxjK84UezePJjMbZBt26KgIAGAD7NUo4EpwJyCAGndncHQdyHM/5pwviR8WPi35/TW6dnowH3lK4DsAjblNKDkWkFWG3yfBMXYHAKI2AXW+Vy97kACwcWVNgdUNryjPbIgLQHlK+xXE4lci+gSgFt8jLSZrQ0OhglCxXDL/AOJT43ZuuhAox94XLXSA/wA+sVfeN0vb3/P01unZxhvZy4nZdIWwuNbqPbUEHoA5H2hEANVZewlIaPnv5RGSaYPfWVPcwV55ywIvqpMQ8iclBkQ+0gFQBuwuRW2xLnJdJMQ+42B76rKjsLNxs3k/3GXNxctxec1unZw7d/gl3E/2C+/DAK1diLG9Qari/wAix0LMy68J5U99xgUY+i8R1VUbW1dRiX2hruPCaqcIOBVasQ0s6GMJDfRHwLb6oTWo9Iwk5raNavYO+0Q9az37qR4xmi7r/bSnkAsxQ0POa3Ts88y9pfPErz8evRNi1iveasVS0BaOl8++c6NoNuDzl0ROCNXfsBK2Csxg9AYK4sGqpkWCUmQFdllGbl+DZMKl06spti0HSAgRZbi4/tVI3UPAWjtJjqxVK4G7RKZ9QDSuLCFyMuL36CCWOpMggO3W+JqAzBvjsX/zK4TKOhPMnUW+/ee/dSXQxyb8CNIwObEUrC2DhESYtqJgDdGmve0ksI4uxGgyv/Q6QRAAcA7DogY5wsbXDOI4l26Ca43OUhXguMFTEW7by9QBE3IRV0xuJmBryIYPAYvIAWkrxby4gdIQCpkM+BMfxXMye1+kNKPpmp2BV9GsHJD8KPnbDz7swA2D8pn3XW6CCiWLNkOIEE5+Af051G5Bo3acqj9o8+KyuVTF373FoMTR/wCSEiJLegfvs1iJmXg0L1jYG8WKsS8hKeK+EvnNFqSUotSqsRu21LWAqSsGvgUCks5wXAdPBYbZjypz7XCXVR1lp6Pt2HtQRhlt5sItmzlGqHcrSeBGJdg5CHjOsKuIYFBlEJKghfDwB32teZH5yCaQACmsasruJ+bvAsjRXdaRTyQs75082EQACgO0AoOd9QAuMeDpC7AMvF8JV6ziHxqBX2XPIG49JxnYhOuw9pRDOLlKnRuawiWpwITRNV+fuNrxRSEwV9X6HXSJIgigL1fAkfPgItRs7PeotQnSPmbcRXkfm/T/AMJ/ocOzZLIkDRA2XWL+Bs3XCQkNA7lziKJGz7pYExDYxip1MwABQFePd4QIbWX+4OzCurl93/wl2jX9Evg53ZS+sga4jQEzvesTQ7oKCaCAAtbyxCLhQB48nGgLlWVufpf8ggqAAf8AhP8AA4T/ABuHZBAscJKtN2HS5VFfazeLMLygkrW+n/hQYMtPVx+4QLsL1UA/PpLfcfc//DFeEbEPY/fpCTpCnJdPuzk/cdzxylP/AAlnRRXpBKmlOV7f4gWB0DY+5Cx54wNoXVz/APBgyUBawY9G27jAoqD9Lym3aEdG/tl85A5MQdGxyXTCMbEsfHqBa4nPPIQEgjongVAtYIIG/bDo4lWWBhQaVgEgjoneBURqj1/NmeDEO/F5fTbsku1f7I3ltbtn7adjBaNN99dYJOEyZ43Xx1c0AW6zJpjRpL+FtSC/otwPApAdlmtS/brtqwXi99UNBQFsNZhO1gW9d2kkeqX+R6zN7Y4HOVd9QdqwMw5YFXxjvRNNajiDsqiWROQmn2vEUOHg7MtGVi9B/GFqhATV9lwWy+FuYnKHAPDKEWcOuSZ8BB3oHDhBoHGFoAF83wIFAJwYBoAfQIIqB0IeSY17oFAsG64EKFai0/1rKVNWnsl2Ok4onIhbcfQrx4uG1rlIeKUKVHvJVbDhXjVQgN2LArUs759VnCZX8mYBjhw/slwQDI+47w+t3OwNoKZW2m5iEihZB+p7qrwtrZww2hQoU6qY9AKp4EKOguYtkoYgVAHGPKJQDFk6LvwQ3QwA7kdg1TsQkWCW/OucAgFybcjl2kERLGJUk2qI1RReASxDR+VQJGgV3YaS2qywq9C7+CWEDVYztNfHRLOosWjxnMgHvkwGmA9BghVhPXrwYTjRKV1eDDJkLEbGM1cCHOMLQq80xUOBdAllpeG7eWaBxezwoMB0ojIeVmqoUFBR4EEWiVHOqwsZhNYwbCV4V5NXrDMJQDuVrXSNlIp2vh0jjCGXY7vN7lM0v6jLhgIl4gJA9Wr0hnulNOi7Vdp6S4TFMRboHSbbjK/HgEqZanNQrWQthNeQWNpykA78xg0CMOO3QOjvM0j1UXy/kHfh8Qf3HBEgbFxnk43MzT5hqPtXJyQuWZ/EgKMd1Sjpl/wsYs3tv8UQAKCgh3GHct1gA5hS7YiYtsQ9I5Feri80MiVkTuK71d9pQ6qC+Nys2WnHU2MzMYxpCUY0Hm78OqdfmZvVv6EAKyD54h4EQtNvG5mjHKxeKOpqS7FWCDTz1ITRTJ+Mf7DCvEMTlDAg6I3f3O6hemaNzzYoQzX8dWCbPQbd5rrHBmRhW5ywcoduzuOYH7Jk6hvvn60XWQQHe6enfrgAK7FxwANPJmUbkvOteEv1pvK9RLZytX7s+8RC2tw+VyhD6jITV8IrEeUzTuK/7e0oJNbUmOUTT0ssrelAjNQM1dvXGfDZbh4AXLOMuX9l18mKiaMwMjkbSoZMlexwOc3X21q9Xv8ATuQnT4jW8MqCO/mUiitAU1IuVsKqpAevfi8NSMHXqCEGFQHhyxNSCxhgQtvIfuKBfAH1xLiXq+gYvDJgx+uIjYNWMbH/AKpgInMt42fuVKENSHDD6Cv5i67+aX8kGU8wmabPxrBK5hQ/mZjQ3ylBov8AxtBs7yRPzBjIPCRLsJTID+fASlrfzRGsW+ClLVc80y1T1Slr80x3+WZa/NBS/wAkw3+WZa/JMtfmmF4OaYb3c0y1+SFqbOaD1xc8y1+aa70XlNcfNNfg5pjH8kFvh5pjH8sxr+WM3/AdsCyu71zo/sw7XtXVfqIacIfrb+cMCDAB4lEArUYplmWmFhNeYKdVBJAzwGBX3GpUqL2pOJA6V1EVVzOuGZwg4UhmLzse0CpDop+4W2Dv+9DG35ofiFGVeQhkteFCP0/QYbIcVD+ZmKp3zjtc23G7FO+cbsU9czbPXMO51zNs9cKc29cx7nXM2z1zNs9cxurtnMLU65k2euFzdO2c0b5mczOj1znjrml5uc1/IzmM1OuGW+TnMO5vnMO51xypbM1+rLJEtDr0BARtoNH/AN+RkhJY3DWs+Snz0+any8+XnzsqP2xJn14hi/zhqIFxTUlYeP2rnqFRgxYGX4iw1SBX1SNI8I029ZyP0QIlndgLQHOGiL0ZZx8LbMDKzi31NN41YracdFOrHic5QHAzCec9ofagoEZsI3BvirWQTVFzJqM9VKIh0AqmbeBJe7QiAEW+eFUEazMAVuDYlQJ5EXsp48zx+ZYgtL5EDaGGjiN7d5dU7taWAHeCxRwl4aAjjaYpaa2EpxjikQBR4mIEX3bVDwDNH0BUYy8uLF9AR8krHATIdZ7bwagKtBClAODfh6OE1IdSaqOpjVwWwIngh4v+CIQEBXCZ+YysqIRNaJ7JxG3bLHP60H0X/EXcLffvKOEdU3UhydQMZ+H2I15g3xBCKrFRjxWAfgGMEq6sYwKtRNKhtcQKk6wTQPnB+hlB4iYTlMSaHTwef6uLiZyAMK6QPPGtol+A3q4vqDGEPtPNz8Ec2sD5UobzQKHxsJzQLiMq7PIhg+gPNUw61DC2h79aLTWMDCk8fBJCqBYwRtq3AcERWdMmUpesygI4DLGHXOAF80XaBKWP0NHllQlFRC1Bay9gqRVKWJA90vnDt+6WwYh6KuOYtDSNnjR70BAJwYlbXFMoyyzGZ1MAp9pNjx/FAuqLfdjYNHaAOYM8QxFJ1V7QQd4T1X64DMVylMaXrz787rIExvSh8E2lSmLx1TZGKFd/ppCJTuy9EFUmJaidP0oFRgLiWcDESN0UuVA2yrXgWtWimPCgF5VcqDECWReG+bfQBQDp39WU6QxkWWlsEQRsfAqAq0ERIBrYjQSjbOV4PjUTguhaRQrCx8Fzg/BGJaBDqrM4lgff6c8D2QPYvAmEQCxM6AWRVLUs5rDAoErvX6DTRBm/ly+dR4o5uFbpASlOsuj6hdINlnfoXtLimaF1IuYsGXcIK7TSDzizh0l4nRFiec4MXHUbRIUoakJGCAXEIfYUNIgGxlN4jSGkLOffqzHVVES19DHtK2VwNfRFBtkWKsErQOJ4+BcxJgTaXnWaVuLlMp7kErVxUzqaxU012jwQp8VHqq095kjC39RrnTMfoSy2GjmN0IuQOHo4gUd6radVVccunzZjj4b14w2WY3iyaLnJyjW9N+EFANDv2Zo4stJKsay5SoEdVMKcItMCFRaN1cxw9KMGICpLgoHLwdQoGDjEujXVhlxb1KwpvJoU2FfaTYcorjH9uwCtMC5YsFv9SZGq97SqFqp8+/BBQ8KBoyPVhTLIsysO2guJgACg0PqheLLL571KieLGyqnh9CFUaxaEPJGGxFzBxFFOIpORDQ1UvrmZDEQZhp9qAsA5st8XxERCejEKqn5ZsZmzW1+B2SYbQL7zaPRBusNRVhLpiANbdAhc7yceMw1vAqsvfeIBlqrEhMG8riFAii94pmKDco4bR0JTChWxaHpDTW7LOMzVS+v0SFgcEuWCUmjvFr+Cib5GjaGkDEBKYI0wXhia0HnC2h2hZoXCHwFjrGJtDYQ9zkQJiMxfUNPtA9/LsgbRXRyiPgEUIjkmtyymtO9EaMXSi7fOJ29KeBItdSAvnLg62I3G9BqkXIOtWF1nA+g0XYE14r9XeUM6gNmAADkv0g4p85Sz7ZqdAGbNiRHQC+EM3SMuKnSIuN+HQuEwAaB3jAq3EwwhcY0VK3DgjS4E0VxlBIABpFouUPhQS1YvddIUt3cOvCGVXkxSQkNypQzvpmZQ0+0D20jFy1NxcpAzajwxLDacWpC0wAJRw8HUo4S4yPSXfynwED09KAGgd+h13cuEt2HA6s0QuPjNGN4JJKqZeYcjKWyAXhMzlEvqLVZYsXwj0Zi0msRlIo4Bp/6u21zXS4lTxjgcI3BEcpKBU8Y3cAogQSFWiV8L6CXd4B0mDMfhFbAo+cuIqFeksLLytM8ltnz7PmWIUO9WaZOtz51l9h+Fx8oNlYO0O9WLKT63Pn2WlL5sR19dg7Wd5spRUu9FSght8WDn72I/3YOsjisBPpmBjYd2CXBf7sRuDkUnybOboVVTIqKsifPsVn2oKRQiSc2CKHerLgU45nybAliBzYjr6zPn2WaFxzPkWfIsH/qz5lnyrKz9rPl2fIs+XZ8uz5dny7Pl2fLs+dZ8uz5dny7Pn2fPs+fZ86z59nyrPlWfLs+XZh/az59ny7Pl2fJs+bZ82z5dny7Pl2fPs+fZ8+z5dlP9WfPs+fZ8qzF+1nybE/7s+fZ8uw/67Ev7WfPsTU99nz7Pl2Cf3Zis9+fPs+fYO0eqw/7bEP6sfIxrllY5tazEy/fZ8qz5dnzzP//Z)]

上图为一个排好序的数组,每组从上到小依次变大。每组的中位数提出来,这个中位数数组的大小是N/5,因为每组5个数嘛。对于中位数数组的中位数p而言,一共有1/2个数比它大,而这个数组大小为N/5,所以一共有N/10组数比P要大。每组一共有5个数,比该组中位数大的有两个,加上这个中位数一共是三个数,就是数所有中位数比p大的组中至少有3个数会比p要大。总共有N/10组,所以比p大的数至少有3N/10个。

再举个例子

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HwH9BLjf-1633870437127)(data:image/jpeg;base64,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)]

这里比7大的数就不止3N/10个,以为10和11都比7大。但10和11位置上的数可能比7小吗?可能,所以说至少有多少个,至少就只包括8、9、12、13和14。

有上述求解可知,小于区最大为7N/10,大于区至少也为7N/10,因此,该部分的时间复杂度为T(7N/10)。

所以总共的时间复杂度为

T(N)=O(N)+T(N/5)+T(7N/10)

不用数学推了,反正用5个数一组分T(N)是可以收敛到O(N)的,3个数也行,7个数也行,别的行不行我就不知道了,要看具体的数学证明,5个肯定是可以的。如果是3个一组呢?中位数数组的大小为N/3,所以1一共有N/6组数比p大,每组数中至少有两个数比p大,所以至少有有N/3个数比p要大,至多有2N/3个数比p要小。结果就是

T(N)=O(N)+T(N/3)+T(2N/3)

4.应用

取前k小的数,如果用堆做时间复杂度就是NlogN,我这样找到第k小的数,比它小的都要就行了。时间复杂度是O(N)。至于哈希那里有一道题是说读取流中前10大的数,那就不行了,因为流的数据太大,只能用堆。

5.我的代码

法一:

https://leetcode-cn.com/problems/kth-largest-element-in-an-array/

class Solution {
public:
void partition(vector<int>& a, int left, int right, int &less, int &more)
{if(left>=right)return;int cur = left, index = right;less = left-1, more = right;while(cur<more){if(a[cur]<a[index])swap(a[cur++], a[++less]);else if(a[cur]==a[index])++cur;elseswap(a[cur], a[--more]);}swap(a[index], a[more++]);return;
}int findKthLargest(vector<int>& nums, int k) {int less=0, more=0, left=0,right=nums.size()-1;k = nums.size() - k;while(left<right){partition(nums, left, right, less, more);if(k<=less)right=less;else if(k>=more)left=more;elsereturn nums[k];}return nums[left];
}};

法二:

我把对数器也写出来了,求的是第n大的,第n小的只要把求test1时的输入改改就行,其它代码都不变。LeetCode中需要单独去重。

#include<iostream>
#include<vector>
#include<algorithm>
#include<ctime>
using namespace std;
int BFPRT(vector<int>a, int begin, int end, int k);int getMedian(vector<int>a, int begin, int end)//获取中位数
{sort(a.begin() + begin, a.begin() + end+1);//加一是因为sort不包括最后一个return a[(begin+end)/2];
}
int MedianOfMedians(vector<int>a, int begin, int end)//找到中位数数组的中位数
{int n = end - begin + 1;int offset =(0 == n % 5) ? 0 : 1;int groupcount = n/5 + offset;vector<int>arr;for (int i = 0; i < groupcount; ++i){int beginI = begin + i * 5;int endI = beginI + 4;arr.push_back(getMedian(a,beginI,min(end,endI)));//将beginI和endI之间的中位数返回,并推入中位数数组中}return BFPRT(arr,0,arr.size()-1,arr.size()/2);//在0和arr.size()-1的范围上求中位数
}
int *partition(vector<int>&a, int left, int right,int key)//用可以对从begin到end的a进行分割
{int ll = left - 1;//ll是小于区和等于区的分界,属于小于区int rr = right + 1;//rr是等于区和大于区的分界,属于大于区int mid = left;while (mid < rr){if (a[mid] > key)swap(a[mid], a[--rr]);else if (a[mid] < key)swap(a[mid++], a[++ll]);else++mid;}int *p = (int*)malloc(8);*p = ll;*(p + 1) = mid;return p;
}
int BFPRT(vector<int>a, int begin, int end, int k)//在begin和end的范围上求第k小的数
{if (end == begin)return a[begin];int p = MedianOfMedians(a,begin,end);//求中文数int *pp = partition(a,begin,end,p);//partition的同时进行排序int less = *pp, more = *(pp+1);//小于区和大于区的位置,中间就是等于区。less属于小于区,more属于大于区,所以下面k<=less有等于号,k<more没有等于号free(pp);if (k <= less)//小于区return BFPRT(a, begin, less, k);else if (k < more)//等于区return a[k];else//大于区return BFPRT(a,more,end,k);
}
int GetMinKByBFPRT(vector<int>a, int k)
{return BFPRT(a,0,a.size()-1,k-1);//因为没有第0小的数,所以要k-1
}
void print(vector<int>a)
{for (int i = 0; i < a.size(); ++i)cout << a[i] << ",";
}
int main(void)//带有对数器
{srand((unsigned)time(NULL));for (int times = 0; times < 10000; ++times){vector<int>a;int n = rand() % 100 + 2;//数组长度为1~100的随机数n = 10;for (int i = 0; i < n; ++i)//数组长度为na.push_back(rand() % 100+1);//数组中的元素时从1到100的随机数vector<int>primitive(a.begin(), a.end());//因为正确的方法和待检测的方法都会对数组进行修改,但是为了能够打印出原始的,所以我留一个/*正确的方法*/vector<int>b(a.begin(),a.end());int k = rand() % n + 1;//1~n的随机数,第K大的数,这个数必须小于n啊sort(b.begin(),b.end(),less<int>());/*正确的方法结束*///test2是待检测的方法k = 1;int test1 = GetMinKByBFPRT(a, n + 1 - k);int test2 = b[n - k];if (test1 != test2){print(primitive);cout << endl;cout << "k==" << k << endl;while(1);}}cout << "true" << endl;while(1);return 0;
}

https://leetcode-cn.com/problems/third-maximum-number/submissions/

215. 数组中的第K个最大元素相关推荐

  1. 【LeetCode】【HOT】215. 数组中的第K个最大元素(优先队列)

    [LeetCode][HOT]215. 数组中的第K个最大元素 文章目录 [LeetCode][HOT]215. 数组中的第K个最大元素 package hot;import java.util.Co ...

  2. 215. 数组中的第 K个最大元素

    215. 数组中的第 K个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数 组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5 ...

  3. ⭐算法入门⭐《哈希表》中等05 —— LeetCode 215. 数组中的第K个最大元素

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   给定整数数组nums和 ...

  4. 力扣(LeetCode)215. 数组中的第K个最大元素(C语言)

    一.环境说明 本文是 LeetCode 215题 : 数组中的第K个最大元素,使用c语言实现. 快速选择.查找无序数组的利器! 测试环境:Visual Studio 2019. 二.代码展示 void ...

  5. 215.数组中的第K个最大元素/347. 前 K 个高频元素

    2020-05-25 1.题目描述 数组中的第K个最大元素 2.题解 1.使用冒泡排序 2.使用快速排序 3.优先队列(内部是用堆来实现的) 3.代码 class Solution { public: ...

  6. vector删除第i个元素_[LeetCode] 215. 数组中的第K个最大元素

    题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/) 题目描述: 在未排序的数组中找到第 k 个最大的元素.请 ...

  7. 215. 数组中的第K个最大元素 BFPRT最牛解法

    在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 ...

  8. LeetCode 215. 数组中的第K个最大元素(快速排序)

    1. 题目 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 ...

  9. LeetCode 215 数组中的第K个最大元素

    题目描述 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大 的元素,而不是第 k 个不同的元素. 题解 快速排序 代码 class Solution { pub ...

  10. leetcode 215.数组中的第K个最大元素

    难度:中等 频率:250 ** 题目:给定整数数组nums和整数k,清返回数组中第K个最大的元素. 清注意你要找的是数组排序后的第K个最大的元素,而不是第K个不同的元素. ** ** 题目类型: 经典 ...

最新文章

  1. ubuntu系统写路由指令_ubuntu/linux下设置永久路由
  2. CCNET配置文件配置工具
  3. win7旗舰版安装不了python_怎样在Win7 64位旗舰版安装Python+Eclipse开发环境
  4. 交换机指定外部DHCP服务器,H3C交换机DHCP服务器设置步骤
  5. Mr.J-- jQuery学习笔记(七)--CSS类操作文本值操作
  6. ASP.NET核心之路微服务第02部分:查看组件
  7. (转)支持Dubbo生态发展,阿里巴巴启动新的开源项目 Nacos
  8. Android开发笔记(八十八)同步与加锁
  9. 3G时代日本手机咸鱼难翻身
  10. MyBatis逆向工程
  11. Mian容器中Page分頁
  12. 玩客云pc端_玩客云pc端
  13. 瞬态抑制二极管与稳压二极管的区别
  14. [Err] 1813 - Tablespace ‘`XX`.`XX`‘ exists.
  15. 计算机三级网络技术准备多久,请问一下,考计算机三级网络技术需要哪些准备?谢谢/...
  16. mysql空间数据类型的使用_MySQL空间数据类型
  17. Longhorn Reloaded M1
  18. QQ音乐Android端120万行代码,编译耗时是怎样优化的,凭借这份《数据结构与算法》核心文档
  19. 基于JAVA设计师品牌服装租赁网站计算机毕业设计源码+数据库+lw文档+系统+部署
  20. 音频拼接软件哪个好用?这三款软件千万不要错过哦

热门文章

  1. echarts实现半圆饼图
  2. 三种1:4传输线变压器巴伦的分析
  3. python 机器翻译免费接口调用
  4. 三、FreeNas实现SMB共享、FTP搭建实验报告
  5. Halcon教程十四:训练自己的模型然后识别相似的图像
  6. IEEE1588V1-V2理解
  7. 亲测有效 抖音视频如何批量去水印下载原视频2020-09-16
  8. 全电子计算机联锁厂家,传统计算机联锁与全电子计算机联锁对比分析
  9. Windows 10 安装 Maven
  10. JavaScript闭包理解