leetcode算法之分治-快排

目录

  • 1.颜色分类
  • 2.排序数组
  • 3.数组中的第k个最大元素
  • 4.最小的k个数

1.颜色分类

颜色分类
在这里插入图片描述

class Solution {
public:void sortColors(vector<int>& nums) {int n = nums.size();int left = -1,right=n,i=0;while(i<right){if(nums[i] == 0) swap(nums[++left],nums[i++]);else if(nums[i] == 1) i++;else swap(nums[--right],nums[i]);}}
};

2.排序数组

排序数组
在这里插入图片描述

class Solution {
public:vector<int> sortArray(vector<int>& nums) {srand(time(NULL));//种下一颗随机种子qsort(nums,0,nums.size()-1);return nums;}void qsort(vector<int>& nums,int l,int r){if(l>=r) return;int left = l-1,right = r+1,i=l;int key = getRandom(nums,l,r);while(i<right){if(nums[i]<key) swap(nums[++left],nums[i++]);else if(nums[i] == key) i++;else swap(nums[--right],nums[i]);}//[l,left] [left+1,right-1] [right,r]qsort(nums,l,left);qsort(nums,right,r);}//等概率获取区间内的任何数据int getRandom(vector<int>& nums,int left,int right){return nums[rand()%(right-left+1)+left];}
};

3.数组中的第k个最大元素

数组中的第k个最大元素
在这里插入图片描述

class Solution {
public:int findKthLargest(vector<int>& nums, int k) {srand(time(NULL));return qsort(nums,0,nums.size()-1,k);}int qsort(vector<int>& nums,int l,int r,int k){if(l==r) return nums[l];//1.随机选择基准元素int left = l-1,right=r+1,i=l;int key = nums[rand()%(r-l+1)+l];while(i<right){if(nums[i]<key) swap(nums[++left],nums[i++]);else if(nums[i] == key) i++;else swap(nums[--right],nums[i]);}//2.分情况讨论//[l,left][left+1,right-1][right,r]int c = r-right+1,b=right-left-1;if(c>=k) return qsort(nums,right,r,k);else if(b+c>=k) return key;else return qsort(nums,l,left,k-b-c);}
};

4.最小的k个数

最小的k个数
在这里插入图片描述

class Solution {
public:vector<int> smallestK(vector<int>& arr, int k) {srand(time(NULL));qsort(arr,0,arr.size()-1,k);return {arr.begin(),arr.begin()+k};}void qsort(vector<int>& arr,int l,int r,int k){if(l>=r) return;int left = l-1,right=r+1,i=l;int key = getRandom(arr,l,r);while(i<right){if(arr[i]<key) swap(arr[++left],arr[i++]);else if(arr[i] == key) i++;else swap(arr[--right],arr[i]);}//[l,left][left+1,right-1][right,r]int a = left-l+1,b = right-left-1;if(a>k) qsort(arr,l,left,k);else if(a+b>=k) return;else qsort(arr,right,r,k-a-b);}int getRandom(vector<int>& arr,int left,int right){return arr[rand()%(right-left+1)+left];}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/149652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(四)、基于 LangChain 实现大模型应用程序开发 | 基于知识库的个性化问答 (基本功能介绍)

⭐ 使用大语言模型构建一个能够回答关于给定文档和文档集合的问答系统是一种非常实用和有效的应用场景。与仅依赖模型预训练知识不同&#xff0c;这种方法可以进一步整合用户自有数据&#xff0c;实现更加个性化和专业的问答服务。 例如,我们可以收集某公司的内部文档、产品说明…

Java JSON字符串替换其中对应的值

代码&#xff1a; public static void main(String[] args) { // String theData crmScene.getData();String theData "[{\"type\":1,\"values\":[\"审批中\",\"未交付\"],\"name\":\"status\"}]"…

在 Streamlit 中使用自定义 CSS 创建加密仪表板

一、说明 仪表板是表示任何类型数据的好方法,它是一种可以很好地理解我们正在处理的数据的形式。使用 HTML、CSS 和 JavaScript 框架构建令人惊叹的仪表板可能是一项非常棘手的工作,尤其是当您想要向仪表板添加复杂的功能和复杂的设计时。但不用担心,Python 会来拯救…

实战项目:VB龟兔赛跑游戏+猜数字游戏

文章目录&#xff1a; 一&#xff1a;效果演示 二&#xff1a;实现思路 三&#xff1a;代码实现 form1 效果图 代码 form2 效果图 代码 form3 效果图 代码 一&#xff1a;效果演示 效果图◕‿◕✌✌✌ 代码下载 二&#xff1a;实现思路 窗口1&#xff1a;龟兔赛…

AddressSanitizer(ASan)

ASAN功能介绍 AddressSanitizer&#xff08;ASan&#xff09;工具是用于用户空间程序的内存错误检测工具&#xff0c;无法直接用于内核空间。 ASAN早先是LLVM中的特性&#xff0c;后被加入gcc4.8&#xff0c;成为 gcc 的一部分&#xff0c;但不支持符号信息&#xff0c;无法显…

Mybatis-Plus 自定义SQL注入器,实现真正的批量插入![MyBatis-Plus系列]

导读 Hi,大家好,我是悟纤。过着爱谁谁的生活,活出不设限的人生。 在使用MyBatis-Plus时,dao层都会去继承BaseMapper接口,这样就可以用BaseMapper接口所有的方法CRUD。 在Mybatis-Plus中调用updateById方法进行数据更新默认情况下是不能更新空值字段的。

使用契约的链上限价订单

我们开发了链上限价订单。 它基于一种称为契约的智能合约&#xff0c;只有在花费输出的交易满足特定条件时才可以花费输出。 为了演示其工作原理&#xff0c;我们实施了以比特币支付的 Ordinals 代币买卖限价订单&#xff0c;无需托管人。 它可以运行在任何比特币协议链上&…

【Python入门教程】Python中函数的用法和意义

在Python中&#xff0c;函数是一种可重用的代码块&#xff0c;它可以被多次调用以执行特定的任务。函数可以帮助我们组织代码&#xff0c;使其更易于阅读和调试&#xff0c;同时还可以提高代码的可重用性和可维护性。 一、函数的定义 在Python中&#xff0c;函数使用def关键字…

C++标准模板库(STL)-map介绍

C标准库中的map是一种关联容器&#xff0c;它提供了键值对的映射关系。每个键值对中的键都是唯一的&#xff0c;通过键可以访问对应的值。 map基本操作 插入元素&#xff1a; 使用insert函数插入元素&#xff0c;该函数有两种形式&#xff1a; // 插入一个pair<const Ke…

网络层——IP协议

文章目录 一.IP协议二.基本概念三.IP协议格式四.分片与组装五.网段划分六.特殊的IP地址七.IP地址的数量限制八.私网IP地址和公网IP地址九.路由十.路由表生成算法 一.IP协议 IP协议全称为“网际互连协议&#xff08;Internet Protocol&#xff09;”&#xff0c;IP协议是TCP/IP…

[uni-app]记录APP端跳转页面自动滚动到底部的bug

文章目录 bug描述原因分析: 处理方案 bug描述 1.点击的A页面, 跳转到了B页面, 第一次页面正常显示 2.从B页面返回A页面 3.A页面不进行任何操作,再次点击A页面进入B页面 4.B页面自动滚动到底部. 原因 看一段A页面代码 let that thisthis.defaultScrollTop uni.getStorageSy…

Zookeeper中的Watch机制的原理?

前言 Zookeeper是一个分布式协调组件&#xff0c;为分布式架构下的多个应用组件提供了顺序访问控制能力。它的数据存储采用了类似于文件系统的树形结构&#xff0c;以节点的方式来管理存储在Zookeeper上的数据 Zookeeper提供了一个Watch机制&#xff0c;可以让客户端感知到Zook…

第12周 E-R图

偏系统化的ER图例子还是不够&#xff0c;需要寻找 汇报时很多人的er图都有问题&#xff0c;重点是作为e的实体&#xff08;方框表示&#xff09;含义并没有搞懂

启动dubbo消费端过程提示No provider available for the service的问题定位与解决

文/朱季谦 某次在启动dubbo消费端时&#xff0c;发现无法从zookeeper注册中心获取到所依赖的消费者API&#xff0c;启动日志一直出现这样的异常提示 Failed to check the status of the service com.fte.zhu.api.testService. No provider available for the service com.fte…

【Vue】Vue3 超简单拖拽条动态修改容器宽度

demo 代码 const leftBoxWidth ref(200); // 默认宽度 const leftResize (e: MouseEvent) > {const startX e.clientX;const startWidth leftBoxWidth.value;const mouseMove (documentE: MouseEvent) > {// 80 是左侧菜单宽度leftBoxWidth.value startWidth docu…

卷积神经网络(VGG-16)海贼王人物识别

文章目录 前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;我的环境&#xff1a; 2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集5. 归一化 三、构建VGG-16网络1. 官方模型&#xff08;已打包好&#xff…

笔记56:深度循环神经网络

本地笔记地址&#xff1a;D:\work_file\DeepLearning_Learning\03_个人笔记\3.循环神经网络\第9章&#xff1a;动手学深度学习~现代循环神经网络 a a a a a a a a

Cesium冷知识:判断cesium是否使用webgl2

老的Cesium.js&#xff0c;默认使用webgl1.0技术 现在默认使用webgl2.0技术 虽然有默认值&#xff0c;但是都可以通过相关参数来改变webgl版本 那么如何判断当前Cesium.js使用的是哪个webgl版本&#xff1f; 方案1&#xff1a; let isWebgl2viewer.scene.context.webgl2; //…

vue动态配置路由

文章目录 前言定义项目页面格式一、vite 配置动态路由新建 /router/utils.ts引入 /router/utils.ts 二、webpack 配置动态路由总结如有启发&#xff0c;可点赞收藏哟~ 前言 项目中动态配置路由可以减少路由配置时间&#xff0c;并可减少配置路由出现的一些奇奇怪怪的问题 路由…

vue将base64编码转为pdf方法

<iframe width"100%" height"100%" src"" frameborder"0" id"iframe"></iframe>使用方法: 直接调用就行 viewPdf(传入base64编码即可)//content是base64编码格式const viewPdf (content:any)> {const blob …