自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 394. 字符串解码

任务描述思路栈注意:pop()出字符串时,字符串有可能倒序,也有可能正序,甚至正序倒序都有,因此字符串长度不一代码实现class Solution: def decodeString(self, s: str) -> str: ans = [] for i in s: if i != ']':...

2019-06-28 11:08:00 591

原创 856. 括号的分数

任务描述思路使用栈来记录每次遍历时当前位的分数代码实现class Solution: def scoreOfParentheses(self, S: str) -> int: count = 0 stack = [0] for i in S: if i=='(': s...

2019-06-27 13:41:10 173

原创 921. 使括号有效的最少添加

任务描述思路栈代码实现class Solution: def minAddToMakeValid(self, S: str) -> int: if not S: return 0 stack = [] stack.append(S[0]) c1 = 1 for i i...

2019-06-26 20:31:22 201

原创 739. 每日温度

任务描述思路维护一个递增栈代码实现class Solution(object): def dailyTemperatures(self, T): """ :type T: List[int] :rtype: List[int] """ stack = [] day...

2019-06-25 19:12:04 95

原创 1019. 链表中的下一个更大节点

任务描述任务描述维护一个单调栈代码实现# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def nextLargerNodes...

2019-06-24 17:06:26 161

原创 844. 比较含退格的字符串

任务描述思路栈代码实现class Solution: def backspaceCompare(self, S, T): i,j = len(S)-1,len(T)-1 while i >= 0 and j >= 0: i,j = self.skip(S,i),self.skip(T,j) ...

2019-06-23 23:05:40 74

原创 1021. 删除最外层的括号

任务描述思路栈代码实现class Solution: def removeOuterParentheses(self, S: str) -> str: c1 = 0 c2 = 0 stack = [] for i in S: if i=='(': if...

2019-06-22 21:39:35 272

原创 682. 棒球比赛

任务描述思路栈代码实现class Solution: def calPoints(self, ops: List[str]) -> int: a = ['+','D','C'] stack = [] for i in ops: if i not in a: stack...

2019-06-21 15:59:38 141

原创 169. 求众数

任务描述代码实现class Solution: def majorityElement(self, nums: List[int]) -> int: stack = [] stack.append(nums[0]) for i in range(1,len(nums)): if stack and nums...

2019-06-20 22:53:13 79

原创 292. Nim 游戏

任务描述代码实现class Solution: def canWinNim(self, n: int) -> bool: return n%4 != 0

2019-06-19 22:46:39 79

原创 496. 下一个更大元素 I

任务描述思路单调栈代码实现class Solution: def nextGreaterElement(self, nums1, nums2): stack=[] map={} for x in reversed(nums2): while len(stack) != 0 and stack[-1]&lt...

2019-06-18 23:24:05 111

原创 89. 格雷编码

任务描述思路来自数电的微弱记忆:可以通过在n-1的序列后添加0/1得到n位循环码即于是变成了找规律实现代码class Solution: def grayCode(self, n): basic = [0] ans = basic for i in range(0,n+1): temp = [(ans[...

2019-06-17 23:05:14 78

原创 146. LRU缓存机制

任务描述思路O(1)的查找—> 哈希表O(1)找到最少使用并删除—>双链表实现代码class ListNode: def __init__(self,key=None,val=None,next=None,prev=None): self.val = val self.key = key self.next = nex...

2019-06-17 00:51:53 107

原创 43. 字符串相乘

任务描述实现代码class Solution: def multiply(self, num1: str, num2: str) -> str: l1 = [int(x) for x in num1] l2 = [int(x) for x in num2] a = len(l1) b = len(l2) ...

2019-06-15 22:40:25 77

原创 150. 逆波兰表达式求值

任务描述实现代码class Solution: def evalRPN(self, tokens: List[str]) -> int: stack_result = [] for i in tokens: if i not in '+-*/': stack_result.append(in...

2019-06-14 14:23:06 84

原创 215. 数组中的第K个最大元素

任务描述思路冒泡排序超时,先自暴自弃,之后再重写代码实现class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: nums.sort() return nums[-k]...

2019-06-12 15:45:11 127

原创 16. 最接近的三数之和

任务描述思路双指针先排序,然后遍历nums中每个元素,记录ans和sum并比较大小,移动头尾指针使三数之和靠近target代码实现class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: nums.sort() sum = nums[0...

2019-06-11 17:42:38 74

原创 62. 不同路径

任务描述思路到达点(i,j)的不同路径数记为f(i,j)则 f(i,j)=f(i-1,j)+f(i,j-1)使用一个二维数组来记录到达所有点的路径数为了避免数组越界,声明(n+1)*(m+1)的数组,从(1,1)开始从左向右、从上向下更新数组返回(n,m)的值实现代码class Solution: def uniquePaths(self, m: int, n: int...

2019-06-11 00:59:50 86

原创 33.搜索旋转排序数组

任务描述思路先找出旋转点,再分别二分法实现代码class Solution: def search(self, nums,target): if not nums: return -1 l, h = 0, len(nums) - 1 while l < h: mid = (l...

2019-06-09 01:33:44 60

原创 217. 存在重复元素

任务描述给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。思路暴力搜索实现代码class Solution: def containsDuplicate(self, nums: List[int]) -> bool: a = [] for i in...

2019-06-08 00:30:06 74

原创 59. 螺旋矩阵 II

任务描述思路没啥思路 +1实现代码class Solution: def generateMatrix(self, n: int) -> List[List[int]]: if n == 0: return [] turn_right = True turn_left = False ...

2019-06-06 15:51:34 150

原创 54. 螺旋矩阵

任务描述实现代码class Solution(object): def spiralOrder(self, matrix): """ :type matrix: List[List[int]] :rtype: List[int] """ if not matrix: return ...

2019-06-05 18:24:48 113

原创 122. 买卖股票的最佳时机 II

任务描述思路= = 没啥特别的思路实现代码class Solution: def maxProfit(self, prices: List[int]) -> int: if not prices: return 0 price = prices[0] maxpro = 0 for i...

2019-06-04 14:29:55 141

原创 88. 合并两个有序数组

任务描述思路从两个数组末尾元素开始对比,尾部插入较大元素注意值传递和参数传递的区别代码实现class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, m...

2019-06-03 10:25:38 77

原创 11.盛水最多的容器

任务描述思路默认Marea为列头及列尾组成的矩形,使用双指针,每次短的指针向长的移动,记录当前area并与之前的Marea作比较,更新Marea实现代码class Solution: def maxArea(self, height: List[int]) -> int: i,j = 0,len(height)-1 h = heigh...

2019-06-02 23:17:42 77

原创 557.反转字串符中的单词 III

任务描述实现代码class Solution(object): def reverseWords(self, s): """ :type s: str :rtype: str """ s = s.split(' ') a = [] temp = None f...

2019-06-02 00:32:19 88

原创 53.最大子序和

任务描述思路每次记录当前最大子序和,子序和为负时置0重新开始新子序的求和实现代码class Solution: def maxSubArray(self, nums: List[int]) -> int: maxs = nums[0] sums = 0 for i in nums: sums +...

2019-05-31 17:33:11 62

原创 15.三数之和

任务描述思路若数组中存在三个元素使a+b+c = 0,那么对于nums[i]来说,nums中存在两个数a,b,使得a+b+nums[i] = 0,因此存在两数之和等于0-nums[i]所以定义两数之和的函数two_nums,用来寻找对于每个nums[i],是否存在这样两个数字a和b注意去重,nums存在重复数字时,使用双指针来跳过重复项对于nums[i]来说,满足条件的a、b可能不止...

2019-05-30 23:16:07 107

原创 238.除自身以外数组的乘积

任务描述思路左边数字累积乘上右边数字累积实现代码class Solution: def productExceptSelf(self, nums: List[int]) -> List[int]: lsum = rsum = 1 l = [1] r = [1] j = len(num...

2019-05-29 13:09:57 67

原创 121.买卖股票的最佳时机

任务描述-思路-遍历一遍,初始化最大利润为0,股票最低价格为列表第一个元素,遍历并且对比。实现代码class Solution: def maxProfit(self, prices: List[int]) -> int: if not prices: return 0 mins = prices[0] ...

2019-05-28 21:40:27 86

原创 26. 删除排序数组中的重复项

任务描述思路-双指针实现代码class Solution: def removeDuplicates(self, nums: List[int]) -> int: if len(nums) <=1: return len(nums) i = 0 for j in range(1,len(num...

2019-05-27 20:43:15 58

原创 104.二叉树的最大深度

任务描述代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def ma...

2019-05-26 16:17:21 66

原创 155.最小栈

任务描述实现代码class MinStack: def __init__(self): """ initialize your data structure here. """ self.stack = [] def push(self, x: int) -> None: self...

2019-05-25 20:44:36 83

原创 14.最长公共前缀

任务描述思路从第一个字符开始,与后面字符依次对比,不同就跳出循环。实现代码class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if not strs or not len(strs[0]): return "" i = 0 ...

2019-05-24 20:25:39 99

原创 141.环形链表1

任务描述给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。思路双指针实现代码# Definition for singly-linked list.# class ListNode(object):# def __init__(self,...

2019-05-22 19:21:14 113

原创 136. 只出现一次的数字

任务描述思路异或实现代码class Solution: def singleNumber(self, nums: List[int]) -> int: ans = nums[0] for i in range(1,len(nums)): ans ^= nums[i] return ans...

2019-05-22 18:56:11 78

原创 61. 旋转链表

任务描述思路先成环,再断开代码实现# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def rotateRight(sel...

2019-05-21 15:46:28 93

原创 8. 字符串转换整数 (atoi)

任务描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些...

2019-05-20 11:37:31 117

原创 70.爬楼梯

任务描述思路与斐波那契数列同一个思路,f(n) = f(n-1)+f(n-2)实现代码class Solution: def climbStairs(self, n: int) -> int: if n <= 2: return n a = 1 b = 2 sum = 0 ...

2019-05-19 21:48:27 117

原创 142.环形链表2

任务描述思路使用set()实现代码 while head != None: if head in bucket: return head else: bucket.add(head) head=head.next ...

2019-05-18 21:32:07 102

空空如也

空空如也

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

TA关注的人

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