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
相关推荐
JaydenAI2 分钟前
[LangChain之链]Runnable,不仅要可执行,还要可存储、可传输、可重建、可配置和可替换
python·langchain
I_LPL10 分钟前
day36 代码随想录算法训练营 动态规划专题4
java·算法·leetcode·动态规划·hot100
Mr YiRan10 分钟前
C++二义性,多态,纯虚函数和模版函数
java·jvm·c++
ab15151710 分钟前
2.24完成129、134、135
数据结构·算法
2301_8169978812 分钟前
虚拟DOM与Diff算法
前端·vue.js·算法
闻缺陷则喜何志丹12 分钟前
P8153 「PMOI-5」送分题/Yet Another Easy Strings Merging|普及+
c++·数学·算法·洛谷
tankeven15 分钟前
HJ102 字符统计
c++·算法
lihao lihao18 分钟前
接口自动化测试—request模块
开发语言·python
lintax19 分钟前
计算π值-割圆法
python·公式推导·计算π·割圆法
升讯威在线客服系统21 分钟前
从 GC 抖动到稳定低延迟:在升讯威客服系统中实践 Span 与 Memory 的高性能优化
java·javascript·python·算法·性能优化·php·swift