- 博客(20)
- 收藏
- 关注
原创 leetcode-102
leetcode层序遍历二叉树 - 102给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], res=[] if not root: return res def haha(root,depth): if not root: return if de
2021-12-02 16:45:16
376
原创 leetcode-94
leetcode-94 二叉树中序遍历class Solution(object): def inorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """ res = [] def haha(root): if not root: return
2021-12-01 15:32:08
353
原创 leeetcode-145
leetcode-145 二叉树中序遍历class Solution(object): def postorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """ res = [] def haha(root): if not root: return
2021-12-01 15:31:01
455
转载 leetcode 12-01 144
leetcode12.01-144 二叉树前序遍历前中后看中在哪个位置,前序:中左右中:左中右后:左右中给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]class Solution(object): def preorderTraversal(self, root): """ :type root: TreeNode :rtype: List[in
2021-12-01 15:24:21
122
原创 2021.11.20 leetcode-6
2021.11.20 leetcode-6计算第一行与n之间的关系。往后一行可以根据第一行进行地推,需要注意的是,第一行的最后一个所在的周期可能不完全,因此需要判断第一行再往后延一个周期回推得到的元素是否在数组长度内。 if len(s) == 1 or len(s)==0 or numRows ==1: return s a = "" n = numRows for i in range(len(s)):
2021-11-20 16:03:01
182
原创 2021.11.19-leetcode-3
2021.11.19-leetcode-3思路:出现重复字符,则删除重复字符以前的字符。应用语句,list.index(val) 可以查找 list中出现 val 的下标。 n = len(s) max_length = 0 sub_s = [] for i in range(n): if s[i] not in sub_s: sub_s.append(s[i])
2021-11-19 21:08:14
214
转载 2021.11.19 Leetcode-322
2021.11.19 Leetcode-322给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。示例 1:输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], amount = 3输出:-1示例 3:输入:coi
2021-11-19 18:12:03
121
转载 2021.11.19 leetcode-256
2021.11.19 leetcode-256动态规划 3维假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个 n x 3 的正整数矩阵 costs 来表示的。例如,costs[0][0] 表示第 0 号房子粉刷成红色的成本花费;costs[1][2] 表示第 1 号房子粉刷成绿色的花费,以
2021-11-19 17:13:14
169
原创 2021.11.19-leetcode 47
2021.11.19-leetcode 47无重复全排列:解法一:对元素组排序,判断后一个是否对前一个重复。不重复进行回溯。在设置一个判断,起始点都可以进行回溯,保证重复数据能被多次写入。 res = [] nums.sort() def dfs(tmp,num): if not num: res.append(tmp) for i, val in enumerate(nu
2021-11-19 14:41:22
370
原创 2021.11.19-leetcode 46
2021.11.19-leetcode 46排列问题,利用回溯算法。class Solution(object): def permute(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ res = [] def huisu(tmp,list1): if len(tmp)==len(nums)
2021-11-19 11:53:29
378
原创 2021.11.18 leetcode-39
2021.11.18 leetcode-39 candidates.sort() res = [] def huisu(tmp,list1): if sum(tmp)==target: res.append(tmp) for idx, val in enumerate(list1): if sum(tmp)+val > target:
2021-11-18 17:16:00
76
原创 2021.11.18 leetcode-22
2021.11.18 leetcode-22组合问题,可以用回溯算法解决: res = [] def dfs(tmp, left, right): # tmp是路径,left,right是可选择列表 if len(tmp)== 2*n: res.append(tmp) if left > 0: # 满足条件,做出选择,向路径中添加元素 dfs(t
2021-11-18 16:30:04
66
转载 回溯算法理解
回溯算法常见解决问题:组合排列切割子集棋盘:N皇后解决一个回溯问题,实际上就是一个决策树的遍历过程主要需要思考三个问题:路径:记录我们做出了的选择(走过的决策树上的路径,我们一般都是在最后的叶子节点上去收集结果)选择列表:当前情况下我们可以做出的选择结束条件:也就是到达了决策树的底层叶子节点,选择列表为空了,无法再做出别的选择了result = [] //结果集def backtrack(路径, 选择列表): if 满足结束条件: result.add(
2021-11-18 15:43:48
106
原创 2021.11.18-leetcode 70
2021.11.18-leetcode 70爬楼梯问题:理解为一个递归问题,n-1个楼梯到n只需要爬一阶,记f(n-1)为到n-1的全部爬法,n-2到n只需要爬2阶,因为爬一阶又回到了n-1阶,记f(n-2)为到n-2的全部爬法,因此f(n) = f(n-1)+f(n-2)经验证,这是一个斐布拉切数列。循环求和即可。 if n == 1 or n == 2: return n p,q = 1,2 for i in range(3
2021-11-18 14:29:04
69
原创 2021.11.18-leetcode - 74
2021.11.18-leetcode - 74搜索二维矩阵思路:将二维矩阵列成一行,利用二分逐步比较查找。关键点:列为一行后的下标与矩阵下标存在映射关系。 if not matrix: return False row = len(matrix) col = len(matrix[0]) l, r = 0, row * col while l < r: mid = l + (r-l)//2
2021-11-18 13:45:39
179
原创 2021-06-16
LeetCode hot-100-2思路:链表 listnodelistnode.val 代表节点值listnode.next 代表当前node下次的指向head node为链表入口tail node 为链表尾部,next = none 代表接地两个链表长度不一,短的补0两个链表同时接地,考虑进位,补1# Definition for singly-linked list.# class ListNode(object):# def __init__(self, val=0,
2021-06-16 11:34:20
63
原创 2021-06-15
Leetcode-13构建罗马-整形字典,并添加特殊情况关键字def romanToInt(s): d = {'I':1, 'IV':3, 'V':5, 'IX':8, 'X':10, 'XL':30, 'L':50, 'XC':80, 'C':100, 'CD':300, 'D':500, 'CM':800, 'M':1000} summ = 0 for i, n in enumerate(s): a = 0 if i == 0:
2021-06-15 16:42:18
70
原创 2021-06-15
LeetCode-9思路一:直接反转数字,判断是否相等def isPalindrome(x): rev = 0 y = abs(x) while (y != 0): if x < 0 or rev > (2**31-1)//10: return False digit = y % 10 y //= 10 rev = rev *10 + digit if rev == ab
2021-06-15 15:30:32
65
原创 2021-06-15
LeetCode-7def resver(x): x = int((str(x) if x > 0 else str(-x) + '-')[: : -1]) if 2**31 - 1 > x > -2**31: return x else: return 0x = -1234567890768686print(resver(x))[: : -1] 可用于字符串取反,但是存在位数超过32的问题def reverse(x):
2021-06-15 14:54:47
57
原创 2021-06-10
LeetCode-1Class A在使用Class时需要将Class初始化a = Class()Sorted() 函数可以对列表进行升序排列欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
2021-06-12 11:39:50
102
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人