leetcode
yzzcmm
这个作者很懒,什么都没留下…
展开
-
9.回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121 输出: true示例 2:输入: -121 输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。反转一半数字...原创 2019-04-02 16:14:16 · 96 阅读 · 0 评论 -
18.四数之和
1.双指针class Solution: def fourSum(self, nums: List[int], target: int) -> List[List[int]]: res=[] nums.sort() if(len(nums)==0):return [] for i in range(len(nums)-...原创 2019-04-08 14:42:48 · 112 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点
两遍遍历class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: dummy=ListNode(0) dummy.next=head length=0 l1=head while(l1!=None)...原创 2019-04-08 14:44:12 · 112 阅读 · 0 评论 -
10.正则表达式匹配
动态规划思路类似最长公共子序列,dp[i][j] = dp[i - 1][j - 1], 如果s[i] == p[j] || p[j] == ‘.’dp[i][j - 2], 如果p[j] == ‘*’ && s[i] != p[j - 1]dp[i - 1][j] || dp[i][j - 1] || dp[i - 1][j - 1] || dp[i - 1][j - 2...原创 2019-04-02 19:20:57 · 373 阅读 · 0 评论 -
22.括号生成
递归法class Solution: def __init__(self): self.ans_list = [] def generateParenthesis(self, n: int): self.ParenthesisIter(n,0,'') return self.ans_list def Parenthe...原创 2019-04-12 18:21:30 · 96 阅读 · 0 评论 -
23.合并K个排序链表
1.建立堆这里利用了heapq 模块# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: import heapq def merg...原创 2019-04-16 13:31:15 · 123 阅读 · 0 评论 -
130.被围绕的区域
1.所有包含O的边界上的的格子,以及它们的邻居O都不会被包围,暂时地将这些O标记,通过深度优先搜索查找这些O,最后将所有未被标记的O转换为Xclass Solution: def solve(self, board: List[List[str]]) -> None: """ Do not return anything, modify board ...原创 2019-04-20 18:37:42 · 324 阅读 · 0 评论 -
53.最大子序和
1.暴力法直接上三次for循环class Solution: def maxSubArray(self, nums: List[int]) -> int: if(len(nums)==1):return nums[0] maxval=nums[0] for i in range(len(nums)): for...原创 2019-04-20 22:42:16 · 114 阅读 · 0 评论 -
简单理解递归
1.有用的递归包含以下几个部分递归基例:当函数直接返回值时有基本实例递归链条:包括一个或多个问题较小部分的递归调用例子1:字符串反转def rvs(s): if s=="": return s else: return rvs(s[1:])+s[0]当然也可用序列分片s[::-1]例子2:斐波那契数列def f(n): if n==1 or n==2: retur...原创 2019-04-16 23:07:06 · 860 阅读 · 1 评论 -
78.子集
1.回溯法如果要解决一个回溯法的问题,通常要确定三个元素:1、选择。对于每个特定的解,肯定是由一步步构建而来的,而每一步怎么构建,肯定都是有限个选择,要怎么选择,这个要知道;同时,在编程时候要定下,优先或合法的每一步选择的顺序,一般是通过多个if或者for循环来排列。2、条件。对于每个特定的解的某一步,他必然要符合某个解要求符合的条件,如果不符合条件,就要回溯,其实回溯也就是递归调用的返回。...原创 2019-04-22 17:00:16 · 309 阅读 · 0 评论 -
25.k个一组翻转链表
三部曲,我们只关心一次递归做了什么1.递归终止条件:判断是否有至少k个节点,如果没有就返回.2.这一级递归要做什么:反转这一级递归的k个节点3.这一级递归的返回值:将反转后的链表返回.不用纠结递归是怎么传递的,只需知道递归返回是从最底层返回的,即终止条件那返回.# Definition for singly-linked list.# class ListNode:# def...原创 2019-04-18 19:02:08 · 137 阅读 · 0 评论 -
8.字符串转换整数
逐个判断字符串class Solution: def myAtoi(self, str): """ :type str: str :rtype: int """ s = str.strip() syb = 1 ptr = 0 res = 0 if...原创 2019-04-02 15:53:15 · 121 阅读 · 0 评论 -
17.电话号码的字母组合
1.递归class Solution(object): def letterCombinations(self, digits): """ :type digits: str :rtype: List[str] """ # 创建字母对应的字符列表的字典 dic = {2: ['a', 'b',...原创 2019-04-07 21:42:34 · 90 阅读 · 0 评论 -
12.整数转罗马数字
执行用时 : 72 ms, 在Integer to Roman的Python3提交中击败了100.00% 的用户 内存消耗 : 13.5 MB, 在Integer to Roman的Python3提交中击败了0.78% 的用户 class Solution: def intToRoman(self, num: int) -> str: a1=n...原创 2019-04-04 10:27:59 · 93 阅读 · 0 评论 -
11.盛最多水的容器
方法一:暴力法算法在这种情况下,我们将简单地考虑每对可能出现的线段组合并找出这些情况之下的最大面积。我一开始用这种方法,直接超时,代码就不贴了方法二:双指针法算法这种方法背后的思路在于,两线段之间形成的区域总是会受到其中较短那条长度的限制。此外,两线段距离越远,得到的面积就越大。我们在由线段长度构成的数组中使用两个指针,一个放在开始,一个置于末尾。 此外,我们会使用变量 maxar...原创 2019-04-04 10:47:22 · 169 阅读 · 0 评论 -
13.罗马数字转整数
执行用时 : 112 ms, 在Roman to Integer的Python3提交中击败了100.00% 的用户内存消耗 : 13.4 MB, 在Roman to Integer的Python3提交中击败了0.95% 的用户class Solution: def romanToInt(self, s: str) -> int: dict1={"I":1,"V":...原创 2019-04-04 12:38:27 · 125 阅读 · 0 评论 -
14. 最长公共前缀(python)
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: if(strs==[]): return "" prefix=strs[0] for i in range(1,len(strs)): while...原创 2019-04-04 14:01:09 · 1029 阅读 · 0 评论 -
15.三数之和(python)
1. 先排序,利用双指针判断class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: nums.sort() res =[] i = 0 for i in range(len(nums)): if i == 0...原创 2019-04-04 16:56:01 · 201 阅读 · 0 评论 -
16.最接近的三数之和
思路类似三数之和,利用双指针class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: length=len(nums) if length<3: return None nums.sort() ...原创 2019-04-04 17:19:10 · 109 阅读 · 0 评论 -
5.最长回文子串
1.中心扩展算法事实上,只需使用恒定的空间,我们就可以在 O(n2) 的时间内解决这个问题。我们观察到回文中心的两侧互为镜像。因此,回文可以从它的中心展开,并且只有 2n - 1 个这样的中心。你可能会问,为什么会是 2n - 1 个,而不是 n 个中心?原因在于所含字母数为偶数的回文的中心可以处于两字母之间(例如 “abba” 的中心在两个 ‘b’ 之间)。class Solution...原创 2019-03-31 19:39:26 · 91 阅读 · 0 评论 -
207.课程表
思路1:拓扑排序。构建的邻接表就是我们通常认识的邻接表,每一个结点存放的是后继结点的集合。该方法的每一步总是输出当前无前趋(即入度为零)的顶点。为避免每次选入度为 000 的顶点时扫描整个存储空间,可设置一个队列暂存所有入度为 000 的顶点。具体做法如下:1、在开始排序前,扫描对应的存储空间,将入度为 0 的顶点均入队列。2、只要队列非空,就从队首取出入度为 0 的顶点,将这个顶点输出...原创 2019-04-20 15:14:45 · 186 阅读 · 0 评论