【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素

 《博主简介》

小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】
二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】

排序

翻转对

# 分治排序算法扩展

class Solution:

    def reversePairs(self, nums: List[int]) -> int:

        def merge(left, right):

            # 统计前面比后面大的翻转对个数

            j = 0

            for i in range(len(left)):

                while j < len(right) and left[i] > 2 * right[j]:

                    j += 1

                self.count += j

            # 合并两个有序列表

            res = []

            while  len(left) > 0 and len(right) > 0:

                if left[0] < right[0]:

                    res.append(left.pop(0))

                else:

                    res.append(right.pop(0))

            if left:

                res.extend(left)

            if right:

                res.extend(right)

            return res

        def mergeSort(arr):

            n =len(arr)

            if n < 2:

                return arr

            middle = n // 2

            left = arr[:middle]

            right = arr[middle:]

            sort_left = mergeSort(left)

            sort_right = mergeSort(right)

            return merge(sort_left, sort_right)

        self.count = 0

        mergeSort(nums)

        return self.count

股票问题

买卖股票的最佳时机

class Solution:

    def maxProfit(self, prices: List[int]) -> int:

        if not prices:

            return 0

        minValue = prices[0]

        res = 0

        for i in range(1, len(prices)):

            minValue = min(minValue, prices[i])

            res = max(res, prices[i]-minValue)

        return res

买卖股票的最佳时机3

TOP K问题

数组中的 第K个最大元素

class Solution:

    def findKthLargest(self, nums: List[int], k: int) -> int:

        # 使用快速排序

        lo = 0

        hi = len(nums) - 1

        k = len(nums) - k

        while lo <= hi:

            p = self.partition(nums, lo, hi)

            if p > k:

                hi = p - 1

            elif p < k:

                lo = p + 1

            else:

                return nums[p]

        return -1

    

    def  partition(self, nums, lo, hi):

        pivot = nums[lo]

        i = lo

        j = hi

        while i < j:

            while i < j and nums[j] >= pivot:

                j -= 1

            nums[i] = nums[j]

            while i < j and nums[i] < pivot:

                i += 1

            nums[j] = nums[i]

        nums[i] = pivot

        return i

数组中前K个最小的元素

def partition(nums, lo, hi):

    pivot = nums[lo]

    i = lo

    j = hi

    while i < j:

        while i < j and nums[j] >= pivot:

            j -= 1

        nums[i] = nums[j]

        while i < j and nums[i] < pivot:

            i += 1

        nums[j] = nums[i]

    nums[i] = pivot

    return i

def getKminnums(nums, k):

    index = k - 1

    low = 0

    high = len(nums) - 1

    while low <= high:

        p = partition(nums, low, high)

        if p > index:

            high = p - 1

        elif p < index:

            low = p + 1

        else:

            # 输出前k个元素

            return nums[:index+1]

关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

觉得不错的小伙伴,感谢点赞、关注加收藏哦!

欢迎关注下方GZH:阿旭算法与机器学习,共同学习交流~

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

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

相关文章

caffeine 缓存_使用Caffeine和Spring Boot的多个缓存配置

caffeine 缓存缓存是几乎所有应用程序性能的关键。 有时需要分布式缓存 &#xff0c;但并非总是如此。 在许多情况下&#xff0c;本地缓存可以很好地工作&#xff0c;并且不需要分布式缓存的开销和复杂性。 因此&#xff0c;在许多应用程序中&#xff0c;包括普通的Spring和Sp…

File类的学习

文章目录简介常量常用方法代码示例简介 java.io.File 是文件和目录的路径名的抽象表示形式&#xff0c;主要用于文件和目录的创建、查找和删除等操作 常量 public static final char separatorChar // 这个常量保存系统默认的文件名分隔符&#xff0c;以字符形式保存 public…

服务器被一堆系统登录_WIN10做天高服务器客户端登录出现“操作系统原因无法登录”...

今天上午&#xff0c;有一个天联高级版的客户反馈&#xff0c;说金万维天联高级版客户端无法登录了&#xff0c;如图&#xff1a;具体错误“由于您连服务器操作系统原因”&#xff0c;具体截图如下&#xff1a;根据上图的错误提示&#xff0c;应该是天联高级版服务器的补丁失效…

selenium查找文本_在Selenium中查找具有链接文本和部分链接文本的元素

selenium查找文本Selenium中CSS定位器是一个基本概念&#xff0c;每个旨在使用Selenium执行自动化测试的测试人员都应该意识到这一点。 在Selenium中充分使用CSS定位器可以帮助您以更高效&#xff0c;更彻底的方式执行测试。 我从7年以来一直从事自动化测试行业&#xff0c;而且…

Servlet文件上传/上传文件功能的实现(commons-fileupload)

文章目录正常步骤使用 commons-fileupload.jar 实现文件上传正常步骤 step1 在 form 中&#xff0c;设置 method"post",设置 enctype"multipart/form-data"。enctype 属性用于设置表单的编码方式&#xff0c;对于文件上传&#xff0c;必须设置成"mul…

python单行箭头_在Python中,如何让箭头尖在指定的坐标处开始/结束?

我试图使用matplotlib的注释绘制两端带有箭头的直线。但当我绘制它们时&#xff0c;箭头的尖端并没有在图中所示的指定坐标处开始或结束。提示应该从0.6和0.8开始和结束&#xff0c;但它们不是。在可复制代码import matplotlib.pyplot as pltfig plt.figure(figsize (5, 5))p…

MySQL 8.x 修改root用户密码/修改密码/重置密码/忘记密码(为了避免掉坑,值得收藏)

操作系统&#xff1a;CentOS Linux release 8.2.2004 (Core) MySQL版本&#xff1a;mysql Ver 8.0.26 for Linux on x86_64 (Source distribution) 忘记 root 用户的密码&#xff0c;然后我以无需“权限验证”的方式启动 MySQL 服务器&#xff08;具体方法参考这里&#xff09…

sql 账号查询一个表勾选那个权限_Spring Cloud微服务架构中的数据权限DataPermision实现方案...

Spring Cloud微服务架构中的数据权限DataPermision实现方案一、出现原因在Spring Cloud的微服务架构中&#xff0c;常见的权限控制除了菜单权限外&#xff0c;还有数据权限DataPermision。菜单权限主要用于控制用户角色所能访问的菜单以及页面按钮的显示与否&#xff0c;而数据…

科学计数法详解

1.4013E-45 1.4013 * 10 的 -45 次方 1.4013 * 10 的 45 次方的倒数 1.4013 * 10 的 45 次方分之一 1.4013 * 1/10 的 45 次方。 算术表达式&#xff1a;1.4013E-45 1.4013 * 10−4510^{-45}10−45 1.4013 * 11045\frac{1}{10^{45}}10451​ 1.4013 * (110)45(\frac{1}{…

程序中抛出空指针异常_从Java应用程序中消除空指针异常

程序中抛出空指针异常这篇文章简要介绍了Java 8的最有用但又“毫不夸张”的功能。 程序员花费了无尽的时间来纠正最常见但最危险的错误之一&#xff0c;即Null指针异常。 空指针异常会导致我们的应用程序意外中断&#xff0c;并且很难预先检测到。 在许多情况下&#xff0c;…

python token post403原因_Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法...

Django默认开启防止csrf(跨站点请求伪造)攻击&#xff0c;在post请求时&#xff0c;没有上传 csrf字段&#xff0c;导致校验失败&#xff0c;报403错误解决方法1&#xff1a;注释掉此段代码&#xff0c;即可。缺点&#xff1a;导致Django项目完全无法防止csrf攻击解决方法2&…

BigDecimal详解

文章目录为什么要使用BigDecimal构造方法加减乘除舍入模式&#xff08;对BigDecimal进行截取&#xff09;取余数比较大小BigDecimal 转 StringBigDecimal与double和int转换格式化显示 BigDecimal使用DecimalFormat使用String.format()总结为什么要使用BigDecimal double类型的…

java序列化和反序列化_Java恶意序列化背后的历史和动机

java序列化和反序列化与Java的序列化机制相关的问题已广为人知。 有效的Java 1st Edition &#xff08;第10章&#xff09;和有效的Java 2nd Edition &#xff08;第11章&#xff09;的整个最后一章都专门讨论Java的序列化主题。 Effective Java 3rd Edition &#xff08;第12章…

python元祖迭代_如何在Python中迭代元组的堆栈

我尝试在Python中使用预定义为的DepthFirstSearch类实现DepthFirstSearch算法&#xff1a;class Stack:def __init__(self):self.list []def push(self,item):self.list.append(item)def pop(self):return self.list.pop()def isEmpty(self):return len(self.list) 0我还有一…

Request的学习笔记(属Servlet学习课程)

文章目录获取请求消息数据1.获取请求行的数据2.获取请求头的数据3.获取请求体的数据4.获取其它的数据4.1.获取请求参数的通用方式中文乱码问题4.2.请求转发4.3.共享数据4.4.获取 ServletContext 对象继承与实现体系浏览器访问服务器时&#xff0c;会将用户提交的参数数据、协议…

aws lambda_AWS Lambda事件源映射:使您的触发器混乱无序

aws lambda最近&#xff0c;我们为Sigma Cloud IDE上的无服务器项目引入了两个新的AWS Lambda事件源&#xff08;触发类型&#xff09;&#xff1a; SQS队列和DynamoDB流 。 &#xff08;是的&#xff0c;AWS在几个月前就向他们介绍了&#xff1b;但是我们仍然是一个很小的团队…

python curl模块_python pycurl模块

一、pycurl概述PycURl是一个C语言写的libcurl的python绑定库。libcurl 是一个自由的&#xff0c;并且容易使用的用在客户端的 URL 传输库。它的功能很强大&#xff0c;在PyCURL的主页上介绍的支持的功能有&#xff1a;FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and …

MySQL数据库创建用户root@%

步骤&#xff1a; 以 rootlocalhost 登录数据库&#xff0c;即先登录数据库所在的主机&#xff0c;再以 root 用户登录数据库&#xff1a; [roothtlwk0001host ~]# mysql -uroot -p123456必须先删除原来的 root% 用户&#xff1a; mysql> drop user root%; Query OK, 0 r…

第三方工具监控java进程_前9个免费的Java进程监视工具以及如何选择一种

第三方工具监控java进程这样就可以运行Java代码了。 也许它甚至可以在生产服务器上运行。 当您做好工作后&#xff0c;我们得到了好消息和令人讨厌的消息。 令人讨厌的消息是&#xff0c;现在开始调试。 就是进行调试和应用程序性能监视。 这意味着您不仅需要查看编写的代码&a…

python中的numpy函数算相关系数_NumPy ufunc通用函数

NumPy 提供了两种基本的对象&#xff0c;即 ndarray 和 ufunc 对象。前面几节已经介绍了 ndarray&#xff0c;本节将介绍 Numpy。ufunc 是 universal function 的缩写&#xff0c;意思是“通用函数”&#xff0c;它是一种能对数组的每个元素进行操作的函数。许多 ufunc 函数都是…