首页 > 编程语言 >[Python手撕]部分排序

[Python手撕]部分排序

时间:2024-10-01 10:45:55浏览次数:6  
标签:right end Python max start array 排序 部分 逆序

class Solution:
    def subSort(self, array: List[int]) -> List[int]:

        n = len(array)
        start, end = -1, -1

        # 从前往后找到第一个逆序
        for i in range(n - 1):
            if array[i] > array[i + 1]:
                start = i + 1
                break

        if start == -1:
            return [-1, -1]

        # 从后往前找到第一个逆序
        for j in range(n - 1, 0, -1):
            if array[j - 1] > array[j]:
                end = j - 1
                break

        # 逆序中的最小值和最大值
        min_value = min(array[start : end + 1])
        max_value = max(array[start : end + 1])

        left, right = 0, n - 1
        # 从逆序数组向两侧扩展,找到比逆序数组更极端的左右两个数字
        for i in range(start - 1, 0, -1):
            if array[i] <= min_value:
                left = i + 1
                break
        for j in range(end + 1, n):
            if array[j] >= max_value:
                right = j - 1
                break

        return [left, right]

标签:right,end,Python,max,start,array,排序,部分,逆序
From: https://www.cnblogs.com/DCFV/p/18442735

相关文章

  • COMM 337 Python code in your notebook
    COMM337:Homework2DUEDATE:Oct2,202412:00pmThisisHW2Pythonassignment.Thereare13problems.Eachproblemis7pointsandthetotalis100points(9forfollowingfile/printformat).Instructions:Latesubmissionswillnotbeaccepted.Submit......
  • [python] 基于PyOD库实现数据异常检测
    PyOD是一个全面且易于使用的Python库,专门用于检测多变量数据中的异常点或离群点。异常点是指那些与大多数数据点显著不同的数据,它们可能表示错误、噪声或潜在的有趣现象。无论是处理小规模项目还是大型数据集,PyOD提供了50多种算法以满足用户的需求。PyOD的特点包括:统一且用户友......
  • Python 进程:掌控并发世界的钥匙
    引言进程,作为一种操作系统的基本调度单元,它不仅能够独立执行程序,还支持并发操作,这对于提升程序效率、改善用户体验至关重要。特别是在Python这样的解释型语言中,由于全局解释器锁(GIL)的存在,使得多线程在CPU密集型任务上的表现不如预期。此时,利用多进程便成为了一种有效的解决策略。......
  • Python 并发新境界:探索 `multiprocessing` 模块的无限可能
    引言随着硬件技术的发展,多核处理器已经成为标准配置。这意味着我们的计算机拥有执行多个任务的能力。然而,默认情况下,Python程序由于全局解释器锁(GIL)的存在,并不能充分利用这些核心资源。这就引出了multiprocessing模块的重要性——它通过创建独立进程来绕过GIL限制,从而实现真正的并......
  • 教你如何免费获取股票数据用python、JavaScript (Node.js)、JAVA等多种语言的实例代码
    ​近一两年来,股票量化分析逐渐受到广泛关注。而作为这一领域的初学者,首先需要面对的挑战就是如何获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的核心任务是从这些数据......
  • Python工程数学2程序开胃菜(上)
    2数学程序开胃菜在上一章中(https://mp.weixin.qq.com/s/kKenXcEXIeLd_u_2kymF8A),我们介绍了python的IDE;用numpy实现向量计算;用Matplotlib绘图;用sympy实现微积分和求导;用SciPy实现积分;用VPython实现弹跳球动画。在本章中,您将了解Python命令式编程风格的线性程序结构以及分......
  • python tkinter 开发测试
    fromtkinterimport*defname_1_cs():ydm_1_2.place_forget()ydmwz_1_2.place_forget()ydmwz_1_2_B1.place_forget()xz_1_1.place_forget()ydmwz_1_2_B2.place_forget()xz_1_2.place_forget()mulu_1.place_forget()mulu_2.plac......
  • VScode Cmake-tools 部分问题记录
    我的VisualStudioCode先前一直安装了cpp-tools和cmake-tools。随后,我升级了我的GCC环境版本。然而,重新启动VisualStudioCode后,旧的GCC版本仍保留在工具包中。起初,我以为是cpp-tools插件的问题,一直无法解决这个bug。后来卸载了相关插件后才发现是cmake-tools的......
  • Python函数进阶:让你的代码更优雅的秘密武器
    引言你是否曾在编写Python代码时感到困惑,尤其是在处理函数时?你并不孤单!根据一项调查,超过70%的开发者在学习Python时都曾遇到过函数的各种难题。想象一下,如果你能掌握一些高级用法,像装饰器、匿名函数、可变参数和关键字参数等,你的代码将会变得多么优雅和高效!在这篇文章中,我们将......
  • 探索Python模块与包的奥秘:从新手到高手的必经之路
    引言你是否曾在编写Python代码时感到无从下手,尤其是在面对那些看似复杂的模块和包时?根据统计,超过70%的初学者在学习Python时都会遇到模块和包的困惑。今天,我们将揭开这些神秘面纱,带你走进Python模块与包的世界,帮助你轻松掌握它们的定义、使用方法、创建与管理技巧,避免那些常见......