自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 资源 (1)
  • 收藏
  • 关注

原创 (一)ROS系统命令学习

(一)ROS系统命令学习1. find查找相应的package或者stackrospack find [package name]rosstack find [stack_name]例子:rospack find roscpp2. roscd改变路径到相应的package或者stack3. rosls列出相应的package,stack文件夹的文件4.tab键补全...

2022-02-11 17:48:19 354

原创 Leetcode 剑指 Offer 11. 旋转数组的最小数字

代码:class Solution: def minArray(self, numbers: List[int]) -> int: left, right = 0, len(numbers) - 1 while left < right: mid = (left + right) // 2 if numbers[mid] > numbers[right]: left..

2021-10-29 10:00:47 166

原创 Leetcode75-颜色分类

Leetcode75-颜色分类代码:class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ left = 0 right = 1 for left in range(len(nums)):

2021-09-22 16:12:20 169

原创 Leetcode74-搜索二维矩阵

Leetcode74-搜索二维矩阵思路:从右上角开始遍历,如果目标值小于当前值,则列减小;如果目标值大于当前值,则行增加。或者用两次二分法,先使用一次二分法找到可能出现的行,再在该行内使用二分法确定列。代码1:class Solution: def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: row = 0 col = len(matrix[0]) - 1

2021-09-22 15:55:46 97

原创 Leetcode73-矩阵置零

Leetcode73-矩阵置零思路:使用其他字符占位,最后遍历列表,将该字符替换为数字0.遍历二维列表,如果遇到每个位置的数为0,将其所在行、所在列的数字替换为字符’X’代码:class Solution: def setZeroes(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead.

2021-09-22 15:33:03 54

原创 Leetcode71-简化路径

Leetcode71-简化路径思路:代码:class Solution: def simplifyPath(self, path: str) -> str: l = path.split('/') res = [] for i in range(len(l)): if l[i] == '..': if res: res.pop()

2021-09-22 14:58:22 173

原创 Leetcode62-不同路径

Leetcode62-不同路径思路:当前位置可由前一位置向右或者向下得到。特例:第一行和第一列。第一行的位置只能由左边的位置向右得到;第一列的位置只能由上面的位置向下得到。代码:class Solution: def uniquePaths(self, m: int, n: int) -> int: #动态规划 dp = [[0]*n for _ in range(m)] for i in range(m):

2021-09-22 10:57:27 67

原创 Leetcode59-螺旋矩阵 II

Leetcode59-螺旋矩阵 II思路:初始化一个二维数组。二维数组的初始化方法: matrix = [[0] * n for _ in range(n)]和螺旋数组一样的思路代码:def generateMatrix(n): matrix = [[0] * n for _ in range(n)] left, right = 0, n - 1 top, botton = 0, n - 1 elements = [] index = 0

2021-09-21 15:29:09 74

原创 Leetcode58-最后一个单词的长度

Leetcode58-最后一个单词的长度思路:代码:class Solution: def lengthOfLastWord(self, s: str) -> int: end = len(s)-1 while end >= 0 and s[end] == ' ': end-=1 start = end while start >= 0 and s[start] != ' ':

2021-09-21 14:54:00 45

原创 Leetcode56-合并区间

Leetcode56-合并区间思路:判断左右区间的大小遍历intervals中的区间,和res中的最后一个区间相比较。[[1,3],[2,6],[8,10],[15,18]]首先排序:[[1,3],[2,6],[8,10],[15,18]]res初始化为:res=[[]]赋初值:res[0]=intervals[0]=[[1,3]]然后从[2,6]开始遍历,因为【2,6】的左边端点2小于res中最后一个值【1,3】的右边端点3,所以有重叠,因为是排过序的,所以左端点肯定来自【1,3】的1,关

2021-09-20 20:50:48 96

原创 Leetcode53-最大子序和

Leetcode53-最大子序和思路:动态规划dp[i]指i处的最大子序和,如果dp[i-1]<0, 那么dp[i-1]+nums[i]肯定比nums[i]小,此时舍弃dp[i-1],dp[i] = nums[i]代码:class Solution: def maxSubArray(self, nums: List[int]) -> int: dp = [0] * len(nums) dp[0] = nums[0] for i i

2021-09-20 17:16:49 59

原创 Leetcode55-跳跃游戏

Leetcode55-跳跃游戏代码1:(错误版)class Solution: def canJump(self, nums: List[int]) -> bool: cur, left, right = 0, 0, 0 tmp = 0 while right < len(nums): left = right + 1 right = cur + nums[cur]

2021-09-20 17:10:53 148

原创 Leetcode54-螺旋矩阵

Leetcode54-螺旋矩阵思路:依次向右向下向左向上遍历。使用while来控制循环:while(true)作为无限循环,经常在不知道循环次数的时候使用,并且需要在循环内使用break才会停止。break条件:left>right or top>botton代码:class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: left, right = 0,

2021-09-20 16:50:53 48

原创 Leetcode50-Pow(x,n)

Leetcode50-Pow(x,n)代码class Solution: def myPow(self, x: float, n: int) -> float: res = 1 n1 = abs(n) while n1: if n1 % 2 == 1: res *= x n1 //= 2 x *= x if n >

2021-09-20 16:31:53 47

原创 Leetcode47-全排列II

Leetcode47-全排列II和上一题不同的是,本题的nums中可能包含了重复数字,不能再用if nums[i] in path:来判断了。此时想到引入一个列表来标记数字是否使用过。used[I] = True or FalseTrue: 用过了False:没用过题解来自:https://leetcode-cn.com/problems/permutations-ii/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liwe-2/思

2021-09-15 16:16:47 55

原创 Leetcode46-全排列

Leetcode46-全排列思路:代码:class Solution: def permute(self, nums: List[int]) -> List[List[int]]: res = [] def backtrack(path): if len(path) == len(nums): res.append(path[:]) return

2021-09-15 14:23:46 62

原创 Leetcode45-跳跃游戏II

Leetcode45-跳跃游戏II思路代码:class Solution: def jump(self, nums: List[int]) -> int: if len(nums) == 1: return 0 step = 0 # 记录总步数 left = 0 right = 0 cur = 0 # nums=[2,3,1,1,4] whil

2021-09-14 17:06:36 55

原创 Leetcode43-字符串相乘

代码1:class Solution: def multiply(self, num1: str, num2: str) -> str: num1 = '0' + num1 l1 = len(num1) l2 = len(num2) sum = 0 for i in range(l2-1,-1,-1): c = 0 tmp_sum = 0 ...

2021-09-14 16:13:16 74

原创 Leetcode42-接雨水

Leetcode42-接雨水思路:双指针代码:class Solution: def trap(self, height: List[int]) -> int: ans = 0 left = 0 right = len(height) - 1 max_left = 0 max_right = 0 while left < right:

2021-09-14 15:04:51 63

原创 Leetcode41-缺失的第一个正数

Leetcode41-缺失的第一个正数思路:代码:class Solution: def firstMissingPositive(self, nums: List[int]) -> int: n = len(nums) for i in range(n): #判断当前输入是否在【1,n+1】 while nums[i] >= 1 and nums[i] <= n and nums[i] !

2021-08-30 11:00:45 60

原创 Leetcode39-组合总和

Leetcode39-组合总和思路:深度优先遍历/深度优先搜索-----------------------------------------------------------------------------------------代码:class Solution: def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]: res = []

2021-08-29 20:34:34 74

原创 Leetcode34-在排序数组中查找元素的第一个和最后一个位置

Leetcode34-在排序数组中查找元素的第一个和最后一个位置class Solution: def searchRange(self, nums: List[int], target: int) -> List[int]: if not nums: return [-1, -1] def searchLeft(nums, target): left = 0 right = len(n

2021-08-29 15:12:05 69

原创 Leetcode33-搜索旋转排序数组

Leetcode33-搜索旋转排序数组思路:二分法。class Solution: def search(self, nums: List[int], target: int) -> int: left = 0 right = len(nums) - 1 while left <= right: mid = (left + right) // 2 if nums[mid] == ta

2021-08-28 21:13:56 70

原创 Leetcode31-下一个排列

Leetcode31-下一个排列思路:先从后往前遍历,得到最靠右的一组升序组【nums[left], nums[left+1]】代码:特殊情况,空列表or只有一个元素,则返回原列表。class Solution: def nextPermutation(self, nums: List[int]) -> None: if len(nums) == 1: return nums for left in range(len(num

2021-08-28 17:13:17 55

原创 Leetcode733-图像渲染

Leetcode733-图像渲染思路:深度优先搜索。从当前点分别向上、向下、向左、向右搜索,直到不满足条件(超出边界或者不等于初始设定的像素值)。不满足条件需往后退一步,比如:向上移动后不满足条件,则返回(向下回移一步),然后又向下试探。如果当前点移动后的点满足条件(等于初始像素值且没有出界),则将该点涂色,以该点为中心,向上向下向左向右搜索,以此类推。class Solution: def floodFill(self, image: List[List[int]], sr: int,

2021-08-23 21:14:07 56

原创 Leetcode643-子数组最大平均数 I

Leetcode643-子数组最大平均数 I思路:滑动窗口。class Solution: def findMaxAverage(self, nums: List[int], k: int) -> float: sum_ = 0 #计算k个数的和 max_avg = -inf #初始化最大值为负无穷 start = 0 #初始左界限 for end in range(len(nums)): sum_

2021-08-22 20:29:20 54

原创 Leetcode567-字符串的排列

Leetcode567-字符串的排列思路:滑动窗口。计数方法。如果当前子串不满足条件,则向右移动。(left-1,right+1)class Solution: def checkInclusion(self, s1: str, s2: str) -> bool: l1, l2 = len(s1), len(s2) if l1 > l2: return False counter1 = {i: 0 for i

2021-08-22 20:25:58 47

原创 Leetcode187-重复的DNA序列

Leetcode187-重复的DNA序列思路:滑动窗口;使用set()去重复。遍历长度为L的子串,如果子串没出现过,则加入visited,如果子串在visited中出现过,则是要寻找的目标子串,加入到最终的结果中。要注意:如果直接使用列表,则可能出现重复子串,使用set函数去重复。class Solution: def findRepeatedDnaSequences(self, s: str) -> List[str]: L = 10 visite

2021-08-22 20:20:45 40

原创 Leetcode29-两数相除

Leetcode29-两数相除思路:倍增比大小。比如63/4:步骤:4+4=8 < 63 multiply =2 【2x4=8】8+8=16<63 multiply =4【4x4=16】16+16=32<63 multiply =8【8x4=32】 res = 832+32=64>63 新的dividend=63-32=31再次循环:4+4=8 < 31 multiply =2 【2x4=8】8+8=16<31 multiply =4【4x

2021-08-21 14:56:56 91

原创 Leetcode28-实现 strStr()

Leetcode28-实现 strStr()思路:切片。遍历。class Solution: def strStr(self, haystack: str, needle: str) -> int: k = len(needle) n = len(haystack) # for i in range(n): for i in range(n-k+1): #边界 if haystack[i:i + k]

2021-08-21 13:53:43 52

原创 Leetcode876-链表的中间结点

Leetcode876-链表的中间结点思路1: 先计算出链表的长度,然后找到中间位置,从而得到中间节点。# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def middleNode(self, head: Lis

2021-08-21 10:55:26 40

原创 Leetcode26-删除有序数组中的重复项

Leetcode26-删除有序数组中的重复项思路:双指针i, ji用来记录哪些项是不重复的,j来遍历所有项。class Solution: def removeDuplicates(self, nums: List[int]) -> int: i = 0 j = 1 #for j in range(1, len(nums)): while j < len(nums): if nums[j] !

2021-08-20 22:44:57 44

原创 Leetcode344-反转字符串

Leetcode344-反转字符串思路:双指针,交换左右指针指向的字符。class Solution: def reverseString(self, s: List[str]) -> None: """ Do not return anything, modify s in-place instead. """ left = 0 right = len(s) - 1 while left &

2021-08-20 15:03:39 84

原创 Leetcode167-两数之和II

Leetcode167-两数之和II思路:双指针。和第一个两数之和的不同点是:本题有且只有一个答案,而且输入的整数数组是有序的。class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: left = 1 right = len(numbers) res = [] while left < right:

2021-08-20 14:53:53 43

原创 Leetcode283-移动零

Leetcode283-移动零思路:双指针。right指针用于遍历,left指针用于记录不为零的数。class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ left, right = 0, 0 for right i

2021-08-20 14:33:38 50

原创 Leetcode189-旋转数组

Leetcode189-旋转数组思路1:找规律,但是要新建另一个列表,感觉不太好。class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ res = [0] * len(nums) for j in range

2021-08-20 10:28:13 82

原创 Leetcode16-最接近的三数之和

Leetcode16-最接近的三数之和思路:双指针代码:class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: nums.sort() min_dis = inf for start in range(len(nums) - 1): left = start + 1 right = len

2021-08-17 16:34:56 70

原创 Leetcode35-搜索插入位置

Leetcode35-搜索插入位置思路:二分法,注意特殊情况的判断,当target大于所有数时,插入到列表末尾。代码:class Solution: def searchInsert(self, nums: List[int], target: int) -> int: left = 0 right = len(nums) - 1 if target > nums[-1]: return len(nums)

2021-08-17 15:31:43 48

原创 Leetcode278-第一个错误的版本

Leetcode278-第一个错误的版本思路:二分法,双指针注意开闭区间eg.[F,F,F,T,T]:第四个版本开始错,返回4[F,F,T,T,T,T,T]:第三个版本开始错,返回3代码:# The isBadVersion API is already defined for you.# @param version, an integer# @return an integer# def isBadVersion(version):class Solution: def

2021-08-17 15:16:17 48

原创 Leetcode704-二分查找

Leetcode704-二分查找思路:二分法。定义left,right,初始化为第一个和最后一个元素。mid=(left+right)// 2,如果nums[mid]>target,中间的值比目标值大,说明目标值只可能出现在当前中间位置的左方,所以right=mid-1.最开始写的时候犯了一个错误:写成了right=mid,这种情况下,会陷入死循环。比如([-1,0,5],-1)查找-1时:left = 0right = 2mid = (0+2)//2=1nums[mid] =

2021-08-17 14:44:10 52

RELEASE_2015-08-31.zip

文字超分辨率数据集ICDAR2015

2021-03-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除