![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
O_oAraya
这个作者很懒,什么都没留下…
展开
-
394. 字符串解码
任务描述思路栈注意:pop()出字符串时,字符串有可能倒序,也有可能正序,甚至正序倒序都有,因此字符串长度不一代码实现class Solution: def decodeString(self, s: str) -> str: ans = [] for i in s: if i != ']':...原创 2019-06-28 11:08:00 · 595 阅读 · 0 评论 -
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 · 160 阅读 · 0 评论 -
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 · 88 阅读 · 0 评论 -
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 · 79 阅读 · 0 评论 -
292. Nim 游戏
任务描述代码实现class Solution: def canWinNim(self, n: int) -> bool: return n%4 != 0原创 2019-06-19 22:46:39 · 82 阅读 · 0 评论 -
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 · 88 阅读 · 0 评论 -
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 · 79 阅读 · 0 评论 -
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 · 62 阅读 · 0 评论 -
496. 下一个更大元素 I
任务描述思路单调栈代码实现class Solution: def nextGreaterElement(self, nums1, nums2): stack=[] map={} for x in reversed(nums2): while len(stack) != 0 and stack[-1]<...原创 2019-06-18 23:24:05 · 112 阅读 · 0 评论 -
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 · 79 阅读 · 0 评论 -
217. 存在重复元素
任务描述给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。思路暴力搜索实现代码class Solution: def containsDuplicate(self, nums: List[int]) -> bool: a = [] for i in...原创 2019-06-08 00:30:06 · 77 阅读 · 0 评论 -
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 · 119 阅读 · 0 评论 -
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 · 82 阅读 · 0 评论 -
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 · 177 阅读 · 0 评论 -
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 · 162 阅读 · 0 评论 -
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 · 76 阅读 · 0 评论 -
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 · 203 阅读 · 0 评论 -
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 · 279 阅读 · 0 评论 -
739. 每日温度
任务描述思路维护一个递增栈代码实现class Solution(object): def dailyTemperatures(self, T): """ :type T: List[int] :rtype: List[int] """ stack = [] day...原创 2019-06-25 19:12:04 · 99 阅读 · 0 评论 -
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 · 79 阅读 · 0 评论 -
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 · 149 阅读 · 0 评论 -
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 · 76 阅读 · 0 评论 -
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 · 109 阅读 · 0 评论 -
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 · 91 阅读 · 0 评论 -
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 · 69 阅读 · 0 评论 -
20.有效的括号
任务描述思路用replace()将括号替换为空字符,最后判断返回的字符串是否为空实现代码class Solution: def isValid(self, s: str) -> bool: while '()' in s or '[]' in s or '{}' in s: s = s.replace('[]','') ...原创 2019-05-16 21:23:24 · 68 阅读 · 0 评论 -
231. 2的幂
任务描述给定一个整数,编写一个函数来判断它是否是 2 的幂次方。思路1.判断n是否为1,n=1直接返回true,否则再判断n%2值是否为0,如果为0,判断(n/2)/2的余数是否为0,以此循环,最后跳出循环时如果最后余数依旧为0返回true,中间循环过程只要有n%2 != 0则返回FALSE2.位运算:n若为2的幂次方则n的二进制表示只有某一位为1,其他都为0,因此只需判断n&...原创 2019-05-11 21:43:52 · 69 阅读 · 0 评论 -
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 · 83 阅读 · 0 评论 -
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 · 97 阅读 · 0 评论 -
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 · 103 阅读 · 0 评论 -
7.整数反转.md
#任务描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。#遇到问题一开始直接将int型整数存为列表:[ x for x in str(nums)],但测试用例包含负数,运行后报错解决:一开始使用abs()函数将x取整#实现代码class Solution: def reverse(self, x: int) -> int: ...原创 2019-05-10 16:05:29 · 92 阅读 · 0 评论 -
206.反转链表
任务描述思路递归思想,先反转head之后的节点,再将head练到返回的反转链表末尾迭代,三指针迭代遇到问题原因:当head.next = None时,下一次递归传入的参数为None,该参数没有next属性修改:循环前判断传入参数是否为空迭代时没有考虑l3.next = None的情况- 只输出了最后两个节点,原因在于循环中l1.next = None,每次循环时,l1所...原创 2019-05-15 13:50:09 · 98 阅读 · 0 评论 -
8. 字符串转换整数 (atoi)
任务描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些...原创 2019-05-20 11:37:31 · 119 阅读 · 0 评论 -
46.全排列
任务描述给定一个没有重复数字的序列,返回其所有可能的全排列。示例:思路两层循环嵌套,第一个循环选定开头的数字第二个循环递归,并在nums[:i]+nums[i+1:]中选定后面的数字遇到问题输出为空,原因:递归时没有设置好跳出递归的条件类型错误,原因:代码中将 ans.append([nums[i]]+res)写成了 ans.append(nums[i])+res,...原创 2019-05-14 21:31:50 · 109 阅读 · 0 评论 -
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 · 118 阅读 · 0 评论 -
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 · 86 阅读 · 0 评论 -
215. 数组中的第K个最大元素
任务描述思路冒泡排序超时,先自暴自弃,之后再重写代码实现class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: nums.sort() return nums[-k]...原创 2019-06-12 15:45:11 · 128 阅读 · 0 评论 -
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 · 89 阅读 · 0 评论 -
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 · 64 阅读 · 0 评论 -
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 · 118 阅读 · 0 评论