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

常考常考高频率

1.快排(双指针)

快排,归并排序,堆排序

#快速排序O(nlogn)
def quick_sort(array, left, right):if left < right:mid = partition(array, left, right)quick_sort(array, left, mid)quick_sort(array, mid+1, right)return arraydef partition(array, left, right):pivot = array[left]while left < right:while (left <right and array[right]>= pivot):right -= 1array[left] = array[right]while (left< right and array[left] <= pivot):left += 1array[right] = array[left]array[left] = pivotreturn left
# 归并排序O(nlogn)
def merge(left, right):array = []while (len(left)>0 and len(right)>0):if left[0] < right[0]:array.append(left.pop(0))else:array.append(right.pop(0))array += leftarray += rightreturn arraydef merge_sort(array):if len(array) <= 1:  #如果array只有一个元素直接退出return arraymid = len(array)//2left = merge_sort(array[:mid])right = merge_sort(array[mid:])array_new = merge(left, right)return array_new

2. 第K大(快排or 堆)

力扣215.数组中的第K个最大的元素
912.排序数组

class Solution:def findKthLargest(self, nums: List[int], k: int) -> int:pivot = nums[0]small,equal,big = [],[],[]for i in nums:if i> pivot:big.append(i)elif i < pivot:small.append(i)else:equal.append(i)if len(big) >= k:return self.findKthLargest(big, k)elif len(big)< k and len(big) + len(equal)>=k:return pivotelse:return self.findKthLargest(small,k-len(big)-len(equal))

找到第K大的元素

'''快速排序'''
class Solution:def findKthLargest(self, nums: List[int], k: int) -> int:def partition(nums, left, right):pivot = nums[left]while left< right:while (left< right and nums[right]>=pivot):right -= 1nums[left] = nums[right]while (left<right and nums[left] <= pivot):left += 1nums[right] = nums[left]nums[left] = pivotreturn leftdef randomPartition(nums, left, right):   # 随机选择pivot,防止最坏情况nums是降序pivot_index = random.randint(left, right)nums[left], nums[pivot_index] = nums[pivot_index], nums[left]return partition(nums, left, right)def topKSplit(nums, left, right, k):  #找到第k小的元素,如果是第1小,则index=0mid = randomPartition(nums, left, right)if mid == k-1:return nums[mid]elif mid < k-1:return topKSplit(nums, mid+1, right, k)else:return topKSplit(nums, left, mid-1, k)n = len(nums)return topKSplit(nums, 0, n-1, n-k+1)  #第k大=第n-k+1小

堆排序???

'''堆排序'''
class Solution:def findKthLargest(self, nums: List[int], k: int) -> int:def maxHeapify(arr, i, end):j = 2*i + 1while j <= end:if j+1 <= end and arr[j+1] > arr[j]:j += 1if arr[i] < arr[j]:arr[i], arr[j] = arr[j], arr[i]i = jj = 2*i + 1else:breakdef maxHepify(arr, i, end):     # 大顶堆j = 2*i + 1                 # j为i的左子节点【建堆时下标0表示堆顶】while j <= end:             # 自上而下进行调整if j+1 <= end and arr[j+1] > arr[j]:    # i的左右子节点分别为j和j+1j += 1                              # 取两者之间的较大者if arr[i] < arr[j]:             # 若i指示的元素小于其子节点中的较大者arr[i], arr[j] = arr[j], arr[i]     # 交换i和j的元素,并继续往下判断i = j                       # 往下走:i调整为其子节点jj = 2*i + 1                 # j调整为i的左子节点else:                           # 否则,结束调整breakn = len(nums)# 建堆【大顶堆】for i in range(n//2-1, -1, -1):         # 从第一个非叶子节点n//2-1开始依次往上进行建堆的调整maxHepify(nums, i, n-1)# 排序:依次将堆顶元素(当前最大值)放置到尾部,并调整堆# k-1次重建堆(堆顶元素),或 k次交换到尾部(倒数第k个元素)for j in range(n-1, n-k-1, -1):nums[0], nums[j] = nums[j], nums[0]     # 堆顶元素(当前最大值)放置到尾部jmaxHepify(nums, 0, j-1)                 # j-1变成尾部,并从堆顶0开始调整堆return nums[-k]

3.滑动窗口的最大值(双端队列deque)

4. 岛屿数量 (dfs)

5. 二叉树遍历(队列等)

6. 旋转数组(二分)

7.完全平方数、零钱兑换(动态规划)

8.反转链表

相关文章:

常考常考高频率

1.快排&#xff08;双指针&#xff09; 快排&#xff0c;归并排序&#xff0c;堆排序 #快速排序O&#xff08;nlogn&#xff09; def quick_sort(array, left, right):if left < right:mid partition(array, left, right)quick_sort(array, left, mid)quick_sort(array, …...

Linux项目环境的搭建 (Red hat 9.0Linux操作系统)

一、目的&#xff1a; 1.搭建Linux操作系统项目所需的项目环境构件&#xff1b; 2.了解 Linux的组成&#xff0c;学会编译内核。 二、内容&#xff1a; 安装Red hat 9.0Linux操作系统&#xff1b; 三、步骤&#xff1a; 3.1 正确安装Redhat9.0操作系统。 3.2 rpm -Uvh *.…...

Study--Oracle-08-ORACLE数据备份与恢复(一)

一、ORACLE数据保护方案 1、oracle数据保护方案 2、数据库物理保护方案 oracle数据库备份可以备份到本地集群存储,也可以备份到云存储。 3、数据库逻辑数据保护方案 二、ORACLE数据体系 1、ORACLE 数据库的存储结构 2、oracle物理和逻辑存储结构 3、数据库进程 4、数据库日…...

FreeIPA安装

一、环境准备 主机名IP角色master. bhlu. com192.168.22.10服务端node1. bhlu. com192.168.22.11客户端 两台服务器关闭防火墙和 selinux配置好 yum 源 1.1 配置 chronyd 配置好 chronyd&#xff0c;使用 chronyc source -v 可以验证 # 这里写了一个playbook作为示例了 --…...

mysql数据库:SQL语言基础和基本查询

mysql数据库&#xff1a;SQL语言基础和基本查询 SQL语言简介 Structured Query Language, 结构化查询语言非过程性语言为加强SQL的语言能力&#xff0c;各厂商增强了过程性语言的特征如&#xff1a;Oracle的PL/SQL 过程性处理能力&#xff0c;SQL Server、Sybase的T-SQLSQL是用…...

strimzi operator 部署kafka集群(可外部访问)

Strimzi介绍 官方文档:https://strimzi.io/docs/operators/0.42.0/overview#kafka-components_str Strimzi介绍 Strimzi 是一个用于 Apache Kafka 在 Kubernetes 上部署和管理的开源项目。它提供了一组 Kubernetes 自定义资源定义(Custom Resource Definitions,CRDs)、控制…...

【网络安全】探索AI 聊天机器人工作流程实现RCE

未经许可,不得转载。 文章目录 前言正文前言 我发现了一个广泛使用的AI聊天机器人平台中的远程代码执行漏洞。该漏洞存在于聊天机器人的自定义工作流响应代码中,这些工作流允许开发人员通过创建定制的流程来扩展机器人的功能。 正文 在浏览自动化聊天机器人的多个特定功能…...

虚拟DOM、Vue渲染流程

虚拟DOM&#xff08;Virtual DOM&#xff09;是一种在前端开发中广泛使用的技术&#xff0c;它用JavaScript对象来表示真实DOM&#xff08;文档对象模型&#xff09;的结构和状态。虚拟DOM的核心思想是将页面的状态和结构保存在内存中&#xff0c;而不是直接操作真实的DOM。这一…...

centos7 启动python后端服务与停止服务的sh脚本

centos7 启动python后端服务与停止服务 分别在工程目录下新建启动脚本和停止脚本。 1、启动服务脚本 start_srv.sh: python3 start_srv.py运行 nohup ./start_srv.sh & 以守护进程的方式启动这个服务。 2、停止服务脚本 stop_srv.sh: sp_pidps -ef | grep start_srv…...

访问网站显示不安全怎么办?

访问网站时显示“不安全”&#xff0c;针对不同的原因有不同的解决方式&#xff0c;下面是常见的几种原因和对应的解决办法。 1.未启用HTTPS协议 如果网站仅使用HTTP协议&#xff0c;数据传输没加密&#xff0c;因此会被浏览器标记为“不安全”。解决办法是启用HTTPS协议,给…...

Scala与集合框架:高效数据处理的利器

Scala与集合框架&#xff1a;高效数据处理的利器 Scala 是一种现代化的编程语言&#xff0c;融合了面向对象编程和函数式编程的特性。其集合框架为处理数据提供了强大而灵活的工具&#xff0c;使得数据处理变得高效且富有表达力。本文将深入探讨 Scala 的集合框架&#xff0c;…...

基于 JWT 的模拟登录爬取实战

准备工作 1. 了解 JWT 相关知识 2. 安装 requests 库&#xff0c;并了解其基本使用 案例介绍 爬取网站&#xff1a; https://login3.scrape.center/ 用户名和密码是&#xff1a; admin 模拟登录 基于 JWT 的网站通常采用的是前后端分离式&#xff0c; 前后端的数据传输依…...

力扣(2024.08.06)

1. 144&#xff1a;二叉树的前序遍历 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def preorderTravers…...

如何快速入门 PyTorch ?

PyTorch是一个机器学习框架&#xff0c;主要依靠深度神经网络&#xff0c;目前已迅速成为机器学习领域中最可靠的框架之一。 PyTorch 的大部分基础代码源于 Ronan Collobert 等人 在 2007 年发起的 Torch7 项目&#xff0c;该项目源于 Yann LeCun 和 Leon Bottou 首创的编程语…...

Qt 快速部署环境(windeployqt.exe)

windeployqt.exe 是 Qt 框架提供的一个工具&#xff0c;主要用于将 Qt 应用程序部署到 Windows 环境中。它自动将所需的所有库、插件和文件复制到应用程序的目录中&#xff0c;以便用户能够直接运行应用程序&#xff0c;而无需额外的配置。 主要功能 自动识别依赖项&#xff…...

白骑士的PyCharm教学实战项目篇 4.2 数据分析与可视化

系列目录 上一篇&#xff1a;白骑士的PyCharm教学实战项目篇 4.1 Web应用开发 数据分析和可视化是现代数据科学和工程中的重要环节。借助PyCharm的强大功能&#xff0c;数据分析与可视化的开发工作变得更加高效和便捷。本文将详细介绍如何在PyCharm中进行数据分析工具的集成与…...

el-form-item,label在上方显示,输入框在下方展示

本来是两排展示去写&#xff0c;设计要求一排展示&#xff0c;label再上方&#xff0c;输入框、勾选框在下方&#xff1b;只能调整样式去修改&#xff1b;参考label-position这个属性 代码如下&#xff1a; <el-form ref"form" :model"formData" clas…...

Centos7.9操作系统kdump crash文件vmcore未生成问题

Centos7.9操作系统kdump crash文件未生成问题 一、背景说明1、问题背景 二、排查思路1、先了解下crashkernelcrashkernel设置方式示例如何配置crashkernel验证crashkernel配置 2、再了解下kdump2.1 Kdump 的基本概念2.1.1. 生产内核&#xff08;Production Kernel&#xff09;2…...

找不到符号 javax.servlet.WriteListener

1、问题 找不到符号2、原因 JDK1.8升级到高版本后&#xff0c;需要手动引入包。 在打包时&#xff0c;需要注意一下是否是在父类打包&#xff0c;而不是在某个model打包。 3、解决 引入 <dependency><groupId>javax.servlet</groupId><artifactId>…...

智能仪表板DevExpress Dashboard v24.1 - 新增级联参数过滤

使用DevExpress Analytics Dashboard&#xff0c;再选择合适的UI元素&#xff08;图表、数据透视表、数据卡、计量器、地图和网格&#xff09;&#xff0c;删除相应参数、值和序列的数据字段&#xff0c;就可以轻松地为执行主管和商业用户创建有洞察力、信息丰富的、跨平台和设…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...