0x3f 第49天 面向实习的八股背诵第六天 过了一遍JVM的知识点,看了相关视频讲解JVM内存,垃圾清理,买了plus,稍微看了点确定一下方向

1.划分字母区间

就是跳跃游戏Ⅱ,只不过把最远跳跃的距离改成了字母最后一次出现的位置

关键参数start:作用仅限于记录区间长度

last{}字典:记录每个字母出现的最后位置,最核心的参数

end:记录当前区间里的节点能走到的最远距离

复制代码
class Solution:
    def partitionLabels(self, s: str) -> List[int]:
        last = {}
        for i,c in enumerate(s):
            last[c] = i
        ans = []
        start = end = 0
        for i,c in enumerate(s):
            end = max(end,last[c])
            if i==end:
                ans.append(end-start+1)
                start = i+1
        return ans

2.下一个排列

倒序遍历,找到比当前大的最小的,交换,排序后面的,返回

复制代码
class Solution:
    def nextPermutation(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        #最核心的一步,如果54321反转整个数,这也就代表着,只要能从右向左,
        
        #找到第一个右边大于左边的数,54312,就可以改成54321   ,   54213,改成54231 
        n = len(nums)
        i=n-2
        while i>=0 and nums[i]>=nums[i+1]:
            i-=1
        #如果13542,找到了3,并且可以证明3右边是递减,要找到大于3且最小的就是4,34交换得到,14532,再把剩下的反转
        if i>=0:
            j=n-1
            while nums[j]<=nums[i]:
                j-=1
            nums[i],nums[j]=nums[j],nums[i]

        left,right = i+1,n-1
        while left<right:
            nums[left],nums[right] = nums[right],nums[left]
            left+=1
            right-=1

3.颜色分类

借用一个用户:

"微尘"的理解:

来个直观的

22222222222 先全变成2

11111122222 再变成1

00011122222 再变成0
numi = 2在所有循环内都会执行,所以从结果看是先全变成2,

然后numsp1=1在所有<=1的情况下都会执行,所以从结果看是2中部分替换为1

同理0就是在2的1中部分替换为0.没问题

很形象

复制代码
class Solution:
    def sortColors(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        p0 = p1= 0
        for i,x in enumerate(nums):
            nums[i]=2
            if x<=1:
                nums[p1]=1
                p1+=1
            if x==0:
                nums[p0]=0
                p0+=1
相关推荐
kimnoic4 分钟前
Python中使用封装类还是函数以及它们的区别
开发语言·python
青柠之夏cc9 分钟前
Python Java PHP底层对比:内存并发性能全解析
开发语言·python·线程
TomEval9 分钟前
【测AI】第10篇:AI 模型功能测试实战 —— 测试用例怎么设计?
人工智能·python·功能测试·测试用例
半亩码田15 分钟前
C#转Python第5.1篇:异步编程:asyncio vs async/await,语法相似但机制不同
开发语言·python·c#
yi01118 分钟前
DAY27: LeetCode 110. 平衡二叉树 | 在递归中判断是否平衡
人工智能·笔记·python·算法·leetcode·二叉树·递归
96245633 分钟前
餐饮 SaaS 优惠券系统架构演进(七)营销定价引擎设计:活动、会员价、优惠券、买赠如何在同一 PriceQuote 中可解释地组合
java·运维·算法
m0_5474866637 分钟前
《数据结构:基于C语言的描述》全套PPT课件2026
c语言·数据结构
言乐61 小时前
PythonLOLM自动生成复盘报告模型
开发语言·前端·数据库·人工智能·python
wuminyu1 小时前
stackChunkOop内部结构与GC屏障的配合工作原理剖析
java·linux·c语言·jvm·c++
水水不水啊1 小时前
告别切换N个窗口调试:我用 Python + WebView 做了款现代化串口助手(含 TCP/UDP、波形、协议解析)
python·tcp/ip·udp