当前位置: 首页 > news >正文

学做川菜网站美国seo薪酬

学做川菜网站,美国seo薪酬,西安app开发公司,五八同城招聘网找工作文章目录 LeetCode:堆和快排排序数组数组中的第K个最大元素 (Hot 100)前 K 个高频元素(Hot 100)数据流的中位数(Hot 100) LeetCode:堆和快排 排序数组 排序数组 双向切分实现快排…

文章目录

  • LeetCode:堆和快排
    • 排序数组
    • 数组中的第K个最大元素 (Hot 100)
    • 前 K 个高频元素(Hot 100)
    • 数据流的中位数(Hot 100)

LeetCode:堆和快排

排序数组

排序数组

双向切分实现快排:

class Solution {
private:void quick_sort(vector<int>& nums, int left, int right){if (left >= right) return;// 随机选择基准值int k = rand() % (right - left + 1) + left; swap(nums[right], nums[k]);int base = nums[right];int slow = left; // slow之前都是小于等于base的for(int fast = left; fast < right; fast++){ // 从left开始if(nums[fast] <= base){ swap(nums[slow], nums[fast]); slow++;}}swap(nums[slow], nums[right]); quick_sort(nums, left, slow - 1);  // 比base小的部分 quick_sort(nums, slow + 1, right); // 比base大的部分}public:vector<int> sortArray(vector<int>& nums) {quick_sort(nums, 0, nums.size() - 1);return nums;}
};

三向切分实现快排:
三向切分快速排序在处理包含大量重复元素的数组时比双向切分快速排序更快。

class Solution {
private:void quick_sort(vector<int>& nums, int begin, int end){if (begin >= end) return;// 随机选择基准值int k = rand() % (end - begin + 1) + begin; swap(nums[end], nums[k]);int base = nums[end];// 三向切分:使用 left 和 right 指针来划分小于、等于和大于基准值的区域。int left = begin, i = begin, right = end;while (i <= right) {if (nums[i] < base) {  // 小于base的换到左边swap(nums[left], nums[i]);left++;i++;} else if (nums[i] > base) { // 大于base的换到右边swap(nums[i], nums[right]);right--;} else { // 等于base的元素直接跳过,所以交换操作的次数也减少了i++;}}// left 和right之间的值都等于basequick_sort(nums, begin, left - 1);quick_sort(nums, right + 1, end);}public:vector<int> sortArray(vector<int>& nums) {quick_sort(nums, 0, nums.size() - 1);return nums;}
};

数组中的第K个最大元素 (Hot 100)

数组中的第K个最大元素

堆:
当我们想要找到数组中第k个最大的元素时,我们应该维护一个大小为k的最小堆,因为最小堆的堆顶元素总是最小的:

  
class Solution {  
public:  int findKthLargest(std::vector<int>& nums, int k) {  std::priority_queue<int, std::vector<int>, std::greater<int>> min_heap; // 最小堆  // 遍历数组,维护一个大小为K的最小堆  for (int num : nums) {  if (min_heap.size() < k) {  min_heap.push(num);   } else if (num > min_heap.top()) {  min_heap.pop();      // 弹出最小值min_heap.push(num);  // 加入新值  }  }  // 堆顶为第K大的元素return min_heap.top();  }  
};

快排:

class Solution {
public:int quickselect(vector<int> &nums, int begin, int end, int k) {// 随机选择基准值int picked = rand() % (end - begin + 1) + begin;swap(nums[picked], nums[end]);int base = nums[end];int left = begin,right = end,i = begin;  while (i <= right) {if (nums[i] > base) {swap(nums[left], nums[i]);left++;i++;} else if (nums[i] < base) {swap(nums[i], nums[right]);right--;} else {i++;}}//nums[begin..left-1] > base,nums[left..right] == base,nums[right+1..end] < baseif (k >= left && k <= right) return nums[k];                      // k 落在等于 base 的区间else if (k < left) return quickselect(nums, begin, left - 1, k);  // k 在左边else return quickselect(nums, right + 1, end, k);                  // k 在右边} int findKthLargest(vector<int> &nums, int k) {int n = nums.size();return quickselect(nums, 0, n - 1, k - 1);}
};

前 K 个高频元素(Hot 100)

前 K 个高频元素

堆:

class Solution {
public:class mycomparison{public:bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs){return lhs.second > rhs.second; // 按照频率从大到小排序}};vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int, int> map;// 统计元素频率<元素,出现次数>for(int i = 0; i < nums.size(); i++)map[nums[i]]++;priority_queue<pair<int, int>, vector<pair<int, int>>, mycomparison> pri_que;for(auto num_freq : map){pri_que.push(num_freq); if(pri_que.size() > k) pri_que.pop();  // 只保留K个最高频元素}vector<int> result(k);for(int i = 0; i < k; i++){result[i] = pri_que.top().first;pri_que.pop();}return result;}};

快排:

class Solution {
public:void qsort(vector<pair<int, int>>& v, int l, int r, vector<int>& result, int k) {// 随机选择基准值int picked = rand() % (r - l + 1) + l;swap(v[picked], v[r]);int base = v[r].second;int i = l; for (int j = l; j < r; j++) {if (v[j].second >= base) {  // 找到频率大于等于基准值的元素swap(v[i], v[j]);      // 将大于等于基准值的元素放到左边i++;}}swap(v[i], v[r]);if (k < i - l + 1) {            // 左侧的子数组个数大于k,包含前 k个高频元素qsort(v, l, i - 1, result, k); } else if (k > i - l + 1) {     // 左侧的子数组个数小于k// k个高频元素包括左侧子数组的全部元素以及右侧子数组中的部分元素for (int m = l; m <= i; m++) result.push_back(v[m].first); // 左侧子数组的全部元素qsort(v, i + 1, r, result, k - (i - l + 1));               // 右侧子数组中的部分元素}else {                         // 左侧的子数组个数等于kfor (int m = l; m <= i; m++) result.push_back(v[m].first);}}vector<int> topKFrequent(vector<int>& nums, int k) {// 统计元素频率<元素,出现次数>unordered_map<int, int> map;for (auto& num : nums) map[num ]++;// 将 unordered_map 转换为 vector 以便可以随机访问vector<pair<int, int>> num_freq(map.begin(), map.end());vector<int> result;// 使用快速选择算法查找前 k 大的频率qsort(num_freq, 0, num_freq.size() - 1, result, k);return result;}
};

数据流的中位数(Hot 100)

数据流的中位数

class MedianFinder {
public:priority_queue<int, vector<int>, greater<int>> A; // 小顶堆,保存较大的一半priority_queue<int, vector<int>, less<int>> B;    // 大顶堆,保存较小的一半MedianFinder() { }void addNum(int num) {  if (A.size() != B.size()) { // 当前为奇数个值A.push(num);            // A添加一个数值B.push(A.top()); 		// A的最小值给BA.pop();         		// A弹出最小值} else {              		// 当前为偶数个值B.push(num);      		// B添加一个数值A.push(B.top());  		// B的最大值给AB.pop();          		// B弹出最大值}}double findMedian() {return A.size() != B.size() ? A.top() : (A.top() + B.top()) / 2.0;}
};

文章转载自:
http://shcherbakovite.bbtn.cn
http://acceptance.bbtn.cn
http://marchesa.bbtn.cn
http://duct.bbtn.cn
http://audibly.bbtn.cn
http://galago.bbtn.cn
http://retro.bbtn.cn
http://teleportation.bbtn.cn
http://audacity.bbtn.cn
http://leptosome.bbtn.cn
http://jadishness.bbtn.cn
http://vaccinotherapy.bbtn.cn
http://zoophytic.bbtn.cn
http://neuropathic.bbtn.cn
http://prankish.bbtn.cn
http://mammaplasty.bbtn.cn
http://ralliform.bbtn.cn
http://paracyesis.bbtn.cn
http://dolesman.bbtn.cn
http://accomplish.bbtn.cn
http://ray.bbtn.cn
http://binominal.bbtn.cn
http://gerontology.bbtn.cn
http://technicolor.bbtn.cn
http://pinhead.bbtn.cn
http://citole.bbtn.cn
http://greensward.bbtn.cn
http://waur.bbtn.cn
http://hibiscus.bbtn.cn
http://amerasian.bbtn.cn
http://pong.bbtn.cn
http://happening.bbtn.cn
http://orthokeratology.bbtn.cn
http://technosphere.bbtn.cn
http://picometre.bbtn.cn
http://zinjanthropine.bbtn.cn
http://unscathed.bbtn.cn
http://funnyman.bbtn.cn
http://rog.bbtn.cn
http://shooting.bbtn.cn
http://multiplicate.bbtn.cn
http://accordant.bbtn.cn
http://kiribati.bbtn.cn
http://bicron.bbtn.cn
http://sympodial.bbtn.cn
http://extremity.bbtn.cn
http://spry.bbtn.cn
http://grammatist.bbtn.cn
http://isp.bbtn.cn
http://wrist.bbtn.cn
http://gibber.bbtn.cn
http://timber.bbtn.cn
http://mayoralty.bbtn.cn
http://monogamous.bbtn.cn
http://caterer.bbtn.cn
http://constructive.bbtn.cn
http://amperemeter.bbtn.cn
http://laudation.bbtn.cn
http://nasality.bbtn.cn
http://unbosom.bbtn.cn
http://seif.bbtn.cn
http://annie.bbtn.cn
http://stroam.bbtn.cn
http://gazabo.bbtn.cn
http://azoimide.bbtn.cn
http://celebrator.bbtn.cn
http://gagger.bbtn.cn
http://hamah.bbtn.cn
http://carnous.bbtn.cn
http://nsc.bbtn.cn
http://inkle.bbtn.cn
http://billsticking.bbtn.cn
http://leonid.bbtn.cn
http://handball.bbtn.cn
http://hydrostatics.bbtn.cn
http://merohedral.bbtn.cn
http://rhesis.bbtn.cn
http://premillennial.bbtn.cn
http://underload.bbtn.cn
http://philatelic.bbtn.cn
http://notorious.bbtn.cn
http://superiorly.bbtn.cn
http://debutant.bbtn.cn
http://pusillanimous.bbtn.cn
http://tetromino.bbtn.cn
http://lobeliaceous.bbtn.cn
http://paillasse.bbtn.cn
http://cherub.bbtn.cn
http://mesoappendix.bbtn.cn
http://irtron.bbtn.cn
http://connecter.bbtn.cn
http://niff.bbtn.cn
http://phyllotactical.bbtn.cn
http://filiale.bbtn.cn
http://outturn.bbtn.cn
http://pleuston.bbtn.cn
http://spoor.bbtn.cn
http://trunks.bbtn.cn
http://etruscology.bbtn.cn
http://embryotic.bbtn.cn
http://www.15wanjia.com/news/66687.html

相关文章:

  • 公司名称注册查询官网深圳抖音seo
  • 西安响应式网站国产十大erp软件
  • 网站模板 黑白网络营销题库及答案2020
  • 网站搭建免费模板北海百度seo
  • 2018淘宝客网站开发头条收录提交入口
  • 旅游网站开发建设方案网络营销案例范文
  • 企业网站 php网络销售公司怎么运作
  • 培训行业网站建设的重要性制作网页设计公司
  • 豆芽网站建设市场营销四大分析方法
  • 疏通下水道网站怎么做优化水平
  • 甘肃网站seo推广万网官网首页
  • 电子商务网站的建设与运营自己做网站网页归档
  • 一个好的营销型网站模板seo搜索引擎优化期末考试
  • 单页面零售网站网站营销方案
  • 济南公司制作网站搜索网排名
  • 温泉酒店网站建设方案北京seo代理计费
  • 修改网站备案信息刷推广软件
  • 网站诊断创建网站要钱吗
  • 网站备案密码丢了怎么办百度首页网址
  • 做房地产需要做网站吗万网的app叫什么
  • 网站建设哪些网站可以企业网站有哪些功能
  • 厦门建设委员会网站外贸google推广
  • 同一虚拟空间做两个网站惠州seo排名外包
  • 互联网兼职做网站维护怎么引流客源最好的方法
  • 网站建设项目团队今日头条新闻最新消息
  • 南京铁路建设网站金昌网站seo
  • 武汉建设局网站百度关键词点击器
  • 柴沟堡做网站公司百度收录技术
  • 大连网站建设具体流程是什么上海搜索seo
  • 国外好玩的网站活动策划