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
相关推荐
2401_879693872 小时前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
张李浩8 小时前
Leetcode 054螺旋矩阵 采用方向数组解决
算法·leetcode·矩阵
xixihaha13248 小时前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
big_rabbit05028 小时前
[算法][力扣101]对称二叉树
数据结构·算法·leetcode
WolfGang0073218 小时前
代码随想录算法训练营 Day11 | 二叉树 part01
数据结构
美好的事情能不能发生在我身上8 小时前
Hot100中的:贪心专题
java·数据结构·算法
xixihaha13248 小时前
Python游戏中的碰撞检测实现
jvm·数据库·python
2301_821700539 小时前
C++编译期多态实现
开发语言·c++·算法
xixihaha13249 小时前
C++与FPGA协同设计
开发语言·c++·算法
ID_180079054739 小时前
模拟1688商品详情的Python API实现,返回符合风格的JSON数据
开发语言·python·json