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
num[i] = 2在所有循环内都会执行,所以从结果看是先全变成2,

然后nums[p1]=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
相关推荐
ZC跨境爬虫1 分钟前
Python异步IO详解:原理、应用场景与实战指南(高并发爬虫首选)
爬虫·python·算法·自动化
Mr_Xuhhh10 分钟前
从ArrayList到LinkedList:理解链表,掌握Java集合的另一种选择
java·数据结构·链表
倦王13 分钟前
力扣日刷47-补
python·算法·leetcode
2501_9216494934 分钟前
原油期货量化策略开发:历史 K 线获取、RSI、MACD 布林带计算到多指标共振策略回测
后端·python·金融·数据分析·restful
真心喜欢你吖37 分钟前
统信操作系统UOS部署安装OpenClaw+飞书接入完整教程(国产大模型配置)
人工智能·python·语言模型·大模型·openclaw·小龙虾
沉鱼.441 小时前
第十三届题目
c语言·c++·算法
用户8356290780511 小时前
使用 Python 自动生成 Excel 柱状图的完整指南
后端·python
xcbrand1 小时前
口碑好的品牌策划厂家
大数据·人工智能·python
ZHOU_WUYI1 小时前
ppo算法简单实现
人工智能·pytorch·算法
liu****1 小时前
LangChain-AI应用开发框架(七)
人工智能·python·langchain·大模型应用·本地部署大模型