Python小白 Leetcode刷题历程 No.31-No.35 下一个排列、最长有效括号、搜索旋转排序数组、在排序数组中查找元素的第一个和最后一个位置、搜索插入位置
写在前面:
作为一个计算机院的大学生,总觉得仅仅在学校粗略的学习计算机专业课是不够的,尤其是假期大量的空档期,作为一个小白,实习也莫得路子,又不想白白耗费时间。于是选择了Leetcode这个平台来刷题库。编程我只学过基础的C语言,现在在自学Python,所以用Python3.8刷题库。现在我Python掌握的还不是很熟练,算法什么的也还没学,就先不考虑算法上的优化了,单纯以解题为目的,复杂程度什么的以后有时间再优化。计划顺序五个题写一篇日志,希望其他初学编程的人起到一些帮助,写算是对自己学习历程的一个见证了吧。
有一起刷LeetCode的可以关注我一下,我会一直发LeetCode题库Python3解法的,也可以一起探讨。
觉得有用的话可以点赞关注下哦,谢谢大家!
········································································································································································
题解框架:
1.题目,难度
2.题干,题目描述
3.题解代码(Python3(不是Python,是Python3))
4.或许有用的知识点(不一定有)
5.解题思路
6.优解代码及分析(当我发现有比我写的好很多的代码和思路我就会写在这里)
········································································································································································
No.31.下一个排列
难度:中等
题目描述:
在这里插入图片描述
题解代码(Python3.8)
class Solution:
def nextPermutation(self, nums: List[int]) -> None:
flag=0
l=len(nums)
if l>=2:
for i in range(l-2,-1,-1):
if nums[i]
flag=1
break
for j in range(l-1,i,-1):
if nums[j]>nums[i]:
nums[i],nums[j]=nums[j],nums[i]
nums[i+1:l]=nums[l-1:i:-1]
break
if flag==0:
nums.sort()
解题思路:
这个题用到的知识并不难,难就难在读题和思考写法。
这道题的题目每个字都能看懂,但第一遍连起来看却很难明白,其实这道题可以形象化的描述为&#x