5.日常算法

1. 面试题 17.14. 最小K个数

题目来源

设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。

示例:
输入: arr = [1,3,5,7,2,4,6,8], k = 4
输出: [1,2,3,4]

方法一:堆

class Solution {
public:vector<int> smallestK(vector<int>& arr, int k) {// topk问题——找最小的k个数建立大堆vector<int> ret;priority_queue<int> heap(arr.begin(), arr.begin() + k);for (int i = k; i < arr.size(); i++){if (!heap.empty()){int top = heap.top();if (arr[i] < top){heap.pop();heap.push(arr[i]);}}}for (int i = 0; i < k; i++){ret.push_back(heap.top());heap.pop();}reverse(ret.begin(), ret.end());return ret;}
};

方法二:排序

class Solution {
public:vector<int> smallestK(vector<int>& arr, int k) {// 使用排序sort(arr.begin(), arr.end());return vector<int>(arr.begin(), arr.begin() + k);}
};

方法三:快排

class Solution {
public:void Sort(vector<int> &arr, int left, int right){// 三路划分+随机去基准值if (left >= right) return;int l = left - 1, r = right + 1;int cur = left;int key = arr[rand() % (right - left + 1) + left];while (cur < r){if (arr[cur] < key){swap(arr[cur], arr[l + 1]);l++;cur++;}else if (arr[cur] > key){swap(arr[cur], arr[r - 1]);// 这里不需要进行cur++,因为缓过来的数还没进行判断r--;}else{cur++;}}Sort(arr, left, l);Sort(arr, r, right);}vector<int> smallestK(vector<int>& arr, int k) {// 使用排序Sort(arr, 0, arr.size() - 1);return vector<int>(arr.begin(), arr.begin() + k);}
};

2. LCR 154. 复杂链表的复制

题目来源
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。

在这里插入图片描述

方法一:拼接+拆分

class Solution {
public:Node* copyRandomList(Node* head) {if (head == nullptr) return nullptr;// 1. 将新赋值的节点都追加到原节点的next下Node* cur = head;while (cur != nullptr){Node* next = cur->next;Node* newNode = new Node(cur->val);cur->next = newNode;newNode->next = next;cur = next;}// 新创建的randow就是原节点的random的next节点cur = head;while (cur != nullptr){Node* newcur = cur->next;if (cur->random == nullptr){newcur->random = nullptr;}else{newcur->random = cur->random->next;}cur = cur->next->next;}// 将原节点与新节点断开Node* ret = head->next;cur = head;while (cur){Node* newcur = cur->next;Node* next = newcur->next;if (next != nullptr) newcur->next = next->next;cur->next = next;cur = next;}return ret;}
};

方法二:哈希

class Solution {
public:Node* copyRandomList(Node* head) {if (head == nullptr) return nullptr;unordered_map<Node*, Node*> hash;Node* cur = head;while (cur){hash[cur] = new Node(cur->val);cur = cur->next;}cur = head;while (cur){hash[cur]->next = hash[cur->next];hash[cur]->random = hash[cur->random];cur = cur->next;}return hash[head];}
};

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

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

相关文章

数据挖掘与机器学习(part 9) 规则挖掘Rules Mining关联规则(Association Rules) Apriori算法

基于规则的分类器&#xff1a;Classification using rule based classifier 互斥规则&#xff08;Mutually exclusive rules&#xff09;&#xff1a; 分类器包含互斥规则&#xff0c;如果这些规则彼此独立。 每条记录最多被一条规则覆盖。 穷尽规则&#xff08;Exhaustive …

pdf merge

在 Ubuntu 22.04 上&#xff0c;你可以使用以下命令行工具来合并多个 PDF 文件&#xff1a; 1. pdftk pdftk 是一个强大的 PDF 工具&#xff0c;支持合并、拆分和其他操作。安装和使用方法如下&#xff1a; sudo apt install pdftk pdftk file1.pdf file2.pdf cat output me…

Java Http 接口对接太繁琐?试试 UniHttp 框架吧

前言 从企业级项目来说&#xff0c;如果你项目里还在用传统的编程式Http客户端比如HttpClient、Okhttp去直接对接第三方Http接口&#xff0c; 那么你项目一定充斥着大量的对接逻辑和代码&#xff0c;并且针对不同的对接渠道方需要每次封装一次调用的简化&#xff0c;一旦封装不…

Laravel vs Symfony:哪个框架更适合你?

Laravel vs Symfony&#xff1a;哪个框架更适合你&#xff1f; 在当今的Web开发领域&#xff0c;PHP框架扮演着至关重要的角色。Laravel和Symfony是最受欢迎的两个PHP框架&#xff0c;各自拥有独特的特性和优势。本文将从多个方面对这两个框架进行比较&#xff0c;帮助开发者选…

Java基于SpringBoot的企业OA管理系统,附源码

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

Docker:国内加速源

阿里云docker加速云&#xff1a; sudo tee /etc/docker/daemon.json <<EOF { “registry-mirrors”: [“https://euf11uji.mirror.aliyuncs.com”] } EOFhttps://docker.mozhu.dev/ sudo tee /etc/docker/daemon.json <<EOF {"registry-mirrors": [&qu…

2.python变量

理解&#xff0c;我将提供更详细和深入的解释&#xff0c;包括一些进阶概念和实际应用的例子。我们将从变量类型开始&#xff0c;逐步深入到每种数据类型的特性、操作方法以及它们在编程中的应用场景。 文章目录 1. 变量赋值与作用域变量赋值变量作用域 2. 标准数据类型Number…

Linux shell的七大功能 --- history

1.直接输入“history” 这个命令可以显示出曾经使用过的命令&#xff08;最近时间的500条&#xff09; history 2.“history”命令也可以搭配其他命令一起使用。 例&#xff1a;history | grep "vim"&#xff0c;找出所有包含“vim”的记录&#xff1b; 也可以搭配…

【PHP】部署和发布PHP网站到IIS服务器

欢迎来到《小5讲堂》 这是《PHP》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言安装PHP稳定版本线程安全版解压使用 PHP配置配置文件扩展文件路径…

解锁SQL无限可能:如何利用HiveSQL实现0-1背包问题?

目录 1. 创建物品信息表 2. 设置背包容量(通过 Hive 变量设置) 3. 创建动态规划表并初始化 4. 动态规划填充表格过程

Parcel 插件开发指南:如何为 Parcel 创建自定义插件

前言 Parcel 是一个非常强大的打包工具&#xff0c;适用于快速构建现代 Web 应用程序。它默认提供了很多开箱即用的功能&#xff0c;但在某些场景下&#xff0c;我们可能需要自定义一些功能来满足特定需求。这个时候&#xff0c;编写自定义插件就显得尤为重要。本文将通过一个…

scala隐式转换

概念&#xff1a; 在Scala编程语言中&#xff0c;隐式转换是一种强大的功能&#xff0c;它允许程序在需要时自动转换数据类型或增强对象功能。这种转换通常是通过定义一个标记为implicit的函数来实现的&#xff0c;这个函数能够将一种类型转换为另一种类型。隐式转换的使用可以…

腾讯云COS跨域访问CORS配置

腾讯云COS跨域访问CORS配置方法如下&#xff0c;参考以下截图&#xff1a; 参考文章&#xff1a; 跨域及CORS-Nginx配置CORS

mac删除程序坞(Dock)中“无法打开的程序“

参考&#xff1a; Mac删除软件之后图标还在怎么办&#xff1f;https://blog.csdn.net/weixin_46500474/article/details/124284161Mac程序坞中软件删除出现残留“&#xff1f;”图标无法删除解决方法&#xff1a; https://blog.csdn.net/shenwenhao1990/article/details/12865…

EfficientNet与复合缩放理论(Compound Scaling Theory) 详解(MATLAB)

1.EfficientNet网络与模型复合缩放 1.1 EfficientNet网络简介 1.1.1 提出背景、动机与过程 EfficientNet是一种高效的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;由Google的研究团队Tan等人在2019年提出。EfficientNet的设计目标是提高网络的性能&#xff0c;同时减…

vue2 配置 mock.js 模拟后端数据

安装 mockj 首先确保你有一个 vue 2 项目&#xff0c;如果没有&#xff0c;可以用 Vue CLI 创建一个&#xff1a; vue create vue-mock-demo 开始安装 Mock.js npm install mockjs --save-dev 创建 Mock 配置文件 在项目的 src 目录下新建一个文件夹 mock&#xff0c;并在其中创…

python:用 sklearn SVM 构建分类模型,并评价

编写 test_sklearn_5.py 如下 # -*- coding: utf-8 -*- """ 使用 sklearn 估计器构建分类模型&#xff0c;并评价 """ import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.svm import SVC from sk…

Java多线程与线程池技术详解(十)

拥有梦想&#xff0c;即拥有了生命的火种。 梦想是一座高山&#xff0c;攀爬起来虽然艰辛&#xff0c;但一旦到达顶峰&#xff0c;你的努力就将被铭记于人心。 梦想是一个拼图&#xff0c;每一次努力都是一块拼图&#xff0c;最终汇成一个完整的梦想。 梦想是你的信念&#xff…

后端-redis在springboot项目中的使用步骤

redis在springboot项目中的使用场景 如果再创建一张包含状态的表&#xff0c;里面就有两个字段一个id&#xff0c;一个状态&#xff0c;太浪费&#xff0c;那就使用redis存储&#xff0c; 设置营业状态打烊还是营业中

Elasticsearch之mapping属性设置讲解与实战

Elasticsearch之Mapping属性设置讲解与实战 1. 引言 1.1 博客目的与读者定位 本篇技术博客旨在为Elasticsearch的中级用户及开发者提供一个深入浅出的Mapping属性设置指南。无论您是正在构建新的搜索应用,还是希望优化现有Elasticsearch集群的性能,本文都将为您提供详尽的…