随笔分类 -  算法与数据结构

摘要:问题: # 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 # # # # 示例 1: # # # 输入:n = 3# 输出:["((()))","(()())","(())()","()(())","()()()"] 实现: # leetcode s 阅读全文
posted @ 2021-05-19 23:40 今夜无风 阅读(88) 评论(0) 推荐(0) 编辑
摘要:问题: # 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 # # 求在该柱状图中,能够勾勒出来的矩形的最大面积。 方法一:暴力 # leetcode submit region begin(Prohibit modification and deletio 阅读全文
posted @ 2021-05-17 16:25 今夜无风 阅读(71) 评论(0) 推荐(0) 编辑
摘要:问题: # 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 # # # push(x) —— 将元素 x 推入栈中。 # pop() —— 删除栈顶的元素。 # top() —— 获取栈顶元素。 # getMin() —— 检索栈中的最小元素。 方法:双栈结构 阅读全文
posted @ 2021-05-16 22:02 今夜无风 阅读(50) 评论(0) 推荐(0) 编辑
摘要:问题: # 给定一个链表,判断链表中是否有环。 # # 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的# 位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 阅读全文
posted @ 2021-05-16 13:55 今夜无风 阅读(59) 评论(0) 推荐(0) 编辑
摘要:问题: # 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重# 复的三元组。 # # 注意:答案中不可以包含重复的三元组。 方法一:BF(submit超时) # leetcode submit 阅读全文
posted @ 2021-05-16 12:19 今夜无风 阅读(60) 评论(0) 推荐(0) 编辑
摘要:问题: # 给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,…… 。每次一个玩家# 只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。 # # 给定一个表示 阅读全文
posted @ 2021-05-15 12:01 今夜无风 阅读(78) 评论(0) 推荐(0) 编辑
摘要:树的高度:节点到叶子节点的最大值就是其高度。树的深度:高度和深度是相反的,高度是从下往上数,深度是从上往下。因此根节点的深度和叶子节点的高度是 0。树的层:根开始定义,根为第一层,根的孩子为第二层。二叉树,三叉树,。。。 N 叉树,由其子节点最多可以有几个决定,最多有 N 个就是 N 叉树 二叉搜索 阅读全文
posted @ 2021-04-30 10:43 今夜无风 阅读(83) 评论(0) 推荐(0) 编辑
摘要:# 二叉树系列 class BinaryTree(object): def __init__(self, item): self.item = item self.left = None self.right = None def create_tree_data(): a = BinaryTree 阅读全文
posted @ 2021-04-29 17:08 今夜无风 阅读(170) 评论(0) 推荐(0) 编辑
摘要:关键点:贪心算法 def longest_continue_subseq(li): start = 0 res = 0 for i in range(1, len(li)): if li[i] <= li[i-1]: start = i res = max(res, i - start + 1) r 阅读全文
posted @ 2021-04-28 15:27 今夜无风 阅读(657) 评论(0) 推荐(0) 编辑
摘要:def reverse_str(s): from functools import reduce res = s[::-1] # 切片 res = "".join(list(reversed(s))) # 反转函数 res = reduce(lambda x,y:y+x, s) # reduce p 阅读全文
posted @ 2021-04-27 22:13 今夜无风 阅读(355) 评论(0) 推荐(0) 编辑
摘要:技巧:采用滑动窗口方法,首数值更新尾数值 实现: def max_continue_avg(li, k): first_sum = 0 for i in range(k): first_sum += li[i] res = first_sum for j in range(k, len(li)): 阅读全文
posted @ 2021-04-27 17:52 今夜无风 阅读(114) 评论(0) 推荐(0) 编辑
摘要:定义:从根节点到最近叶子结点的最短路径上的节点个数 实现: class TreeNode(object): def __init__(self, item): self.item = item self.left = None self.right = None def create_tree(): 阅读全文
posted @ 2021-04-27 17:49 今夜无风 阅读(96) 评论(0) 推荐(0) 编辑
摘要:问题: 输入整型数组,返回两元素的索引,使得这两个元素之和为特定的结果。假设这两个元素为不同元素。例如: nums = [1,3,2,7] , target = 5返回[1,2], 因为nums[1] + nums[2] = 3 + 2 = 5; 当没有符合元素时, 返回null def two_s 阅读全文
posted @ 2021-04-24 23:57 今夜无风 阅读(240) 评论(0) 推荐(0) 编辑
摘要:三种情况:1)全部为正数;2)全部为负数;3)有负有正。对传入数据排序: 如果排序后的数组的最大元素为负数,则说明数组元素均为负数如果排序后的数组的最大元素为正数,则又需要分情况讨论:数组中所有元素均为正数,则最大值为最后三个数组元素的乘积;数组中元素有正数,也有负数;这时候就需要进行比较了;用最后 阅读全文
posted @ 2021-04-24 23:35 今夜无风 阅读(156) 评论(0) 推荐(0) 编辑
摘要:思路: def new_ton(num): if num == 0: return 0 res = int(sqrt(num, num)) print(res) def sqrt(n, x): cur = (n + x/n) / 2 if cur == n: return cur else: ret 阅读全文
posted @ 2021-04-24 22:55 今夜无风 阅读(72) 评论(0) 推荐(0) 编辑
摘要:def find_index(li): if not li or len(li) == 0: return li_sum = sum(li) left_total = 0 for i in range(len(li)): left_total += li[i] right_total = li_su 阅读全文
posted @ 2021-04-23 15:57 今夜无风 阅读(47) 评论(0) 推荐(0) 编辑
摘要:一个数的平方根在1~x-1内 def find_sqrt_int(num): if not num: return left, right = 0, num while left <= right: mid = left + (right-left) / 2 if mid ** 2 >= num: 阅读全文
posted @ 2021-04-23 15:52 今夜无风 阅读(76) 评论(0) 推荐(0) 编辑
摘要:题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。解法:采用双指针,遍历数组,发现两个值相等,移动指针,发现两个值不相等,互换位置保证指针走过的地 阅读全文
posted @ 2021-04-22 20:22 今夜无风 阅读(1250) 评论(0) 推荐(0) 编辑
摘要:def biggest_divisor(a, b): """ 欧几里得法获得最大公约数,递归要有停止条件""" if b == 0: return a else: return biggest_divisor(b, a % b) def biggest_divisor_v2(a, b): while 阅读全文
posted @ 2021-04-21 22:32 今夜无风 阅读(152) 评论(0) 推荐(0) 编辑
摘要:def lcs(s1, s2): m = len(s1) # 记录s1长度 n = len(s2) # 记录s2长度 a = [[0 for j in range(n+1)]for i in range(m+1)] # 得分数组 b = [[0 for j in range(n+1)]for i i 阅读全文
posted @ 2021-04-21 22:09 今夜无风 阅读(62) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示