自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 Python刷leetcode--763.划分字母区间

时间复杂度O(N)空间复杂度O(N)只需要遍历两遍字符串,第一遍用hash表统计每个字母出现的最大下标。就是最晚出现的下标。第二遍分段,每一段都记录一个left,right就是当前下标。用一个max_ind记录当前段遍历过的最大下标,如果当前坐标等于最大下标,就开始下一段的记录。并把当前的结果加入ans结果集。[盗一下大佬的图片。]# 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。 # # #

2020-10-22 17:25:31 202

原创 Python刷leetcode--11.盛最多水的容器

# 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, # ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 # # 说明:你不能倾斜容器,且 n 的值至少为 2。 # # # # # # 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。 # # #

2020-10-18 18:34:24 163

原创 Python刷leetcode--6.Z 字形变换

我的思路:class Solution: def convert(self, s: str, numRows: int) -> str: ans = '' if numRows == 1: return s for i in range(1, numRows + 1): # i是从1到numRows+1 step = i - 1 ind = (numRows - 1) .

2020-10-18 13:24:19 139

原创 Python刷leetcode--977.有序数组的平方

一、我的思路:拿一个栈一开始进栈直到遇到正数。然后记录遇到负数的这个坐标,然后依次比较出栈的,和i依次往后迭代的数的大小。from typing import Listclass Solution: def sortedSquares(self, A: List[int]) -> List[int]: ans = [] my_stack = [] # 用来存反序的从小到大 i = 0 while i < len

2020-10-16 10:11:25 182

原创 Python刷leetcode--剑指 Offer 31.栈的压入、弹出序列

这道题在leetcode上难度是简单,但是实现起来思路并不太简单。主要就是用一个栈模拟第一个序列进栈,第二个序列如果跟栈里面最后一个元素相同就一直出栈,并把poped坐标加一。# 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈# 的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 # # # # 示例

2020-10-15 13:52:15 212

原创 Python刷leetcode--剑指 Offer 30.包含min函数的栈

记录一个误区:数据结构学的多之后,老是懒得思考,想直接用高级的数据结构解决问题,反而把问题想复杂了。这道题要求最小值,一开始想直接再维护一个优先队列[堆],每次都能取出最小值。但是维护堆的成本反而增加了。[logn]class MinStack: def __init__(self): """ initialize your data structure here. """ self.A = [] self.B =

2020-10-14 15:44:37 199 4

原创 Python刷leetcode--1002.查找常用字符

思路: 第一个字符串全部字符加入 ans,后面的字符串检测是不是在里面是的话,tmp就+1,并且将这个公共的部分tmp作为ans开始下一次# 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不# 是 4 次,则需要在最终答案中包含该字符 3 次。 # # 你可以按任意顺序返回答案。 # # # # 示例 1: # # 输入:["bella","label","roller"]

2020-10-14 10:26:31 208 2

原创 Python刷leetcode--146.LRU缓存机制

这种设计数据结构的挺难顶的,leetcode还好,给你具体的需求,方法名参数返回值都有了,如果是直接抽象的给你描述,你需要想方法参数返回值,有几个功能(方法),每个方法细节,最后才是思路。[以前感觉数据结构课很没用,毕竟每个语言里面基本上基本上都封装的有,只需要去掌握他们就可以了,不需要每一个都实现一下,现在感觉掌握一门语言最好的办法还是先手写一遍常用的数据结构,既可以了解语言语法,又可以了解特性]class Node: def __init__(self, key=None, value=No

2020-10-12 14:58:41 151 2

原创 Python刷leetcode--142.环形链表 II

感觉这种题没多大用,基本上就是锻炼逻辑思维,全靠背题(不是背代码,是背思路,没一点复用性)如何推导出下面的x = (n - 1) (y + z) + z相遇时slow指针走的距离为x+y2 * (x+y) = x+y+n*(y+z) -> x = (n - 1) (y + z) + z解题其实只需要这一个公式x = (n - 1) (y + z) + z然后这个公式的意义是什么?有什么用?没什么意义,我一开始有个误区,认为要求入口节点,就一定要求x的值。所以一直没有思路。.

2020-10-12 11:29:28 215

原创 Python刷leetcode--541.反转字符串 II

# 给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 # # # 如果剩余字符少于 k 个,则将剩余字符全部反转。 # 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 # # # # # 示例: # # 输入: s = "abcdefg", k = 2# 输出: "bacdfeg"# # # # # 提示: # # # 该字符串只包含小写英文字母。

2020-10-09 08:52:15 142

空空如也

空空如也

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

TA关注的人

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