Lydia的力扣日常
Lydia23333
这个作者很懒,什么都没留下…
展开
-
最小生成树
最小生成树 题目传送门:1584.连接所有点的最小费用 Kruskal算法 Kruskal算法是基于贪心的MST算法。 Step1:把图里的边按照权重从小到大排序 Step2:从小到大遍历每条边,用并查集来确认这条边是否有效(连接两个非联通区域) Step3:直到所有节点都联通 class Solution: def minCostConnectPoints(self, points: List[List[int]]) -> int: def find(idx):原创 2021-01-19 12:00:04 · 92 阅读 · 0 评论 -
并查集
用的不多,老忘,写个Note记录下。 并查集的两个函数: find(index): 返回根节点,同时把节点从树上尽量都连到根上去 union(index1,index2): 把两个节点并起来 parent = [i for i in range(n)] def find(index): if index != parent[index]: parent[index] = find(parent[index])原创 2021-01-07 10:05:40 · 92 阅读 · 0 评论 -
[Leetcode] - 力扣第220场周赛
这就开博一个月了耶 然而然而,这个月里只打了两次周赛,都是五分钟打完两道题然后无了。 ????唉。。。我好菜啊。。。 重新格式化电话号码 给你一个字符串形式的电话号码 number 。number 由数字、空格 ’ '、和破折号 ‘-’ 组成。 请你按下述方式重新格式化电话号码。 首先,删除 所有的空格和破折号。 其次,将数组从左到右 每 3 个一组 分块,直到 剩下 4 个或更少数字。剩下的数字将按下述规定再分块: 2 个数字:单个含 2 个数字的块。 3 个数字:单个含 3 个数字的块。 4 个数原创 2020-12-20 21:11:27 · 172 阅读 · 0 评论 -
买卖股票的最佳时机含手续费
714.买卖股票的最佳时机含手续费 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。 返回获得利润的最大值。 注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。 用动态规划,每天有两种状态,要么持有股票,要么没有持有股票。f(t,有)f(t,有)f(t,有)表示在第t天,持有原创 2020-12-17 11:05:05 · 134 阅读 · 1 评论 -
石子游戏打包
石子游戏 亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。 游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。 亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。 假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得比赛时返回 false 。 定义动态规划的状态 dp[i][j]:dp[i][j]:dp[i][j原创 2020-12-14 11:01:21 · 102 阅读 · 0 评论 -
Python heap/哈希表+最小堆/分割数组为连续子序列
今天的每日一题看的头疼,一看题解,????又是原创 2020-12-04 15:30:40 · 170 阅读 · 0 评论 -
埃式筛/厄拉多塞筛法/Sieve_of_Eratosthenes/计数质数
今天的每日一题是计数质数。 要求统计所有小于非负整数 n 的质数的数量。 为了解这题,学到了一个古老的魔法,快速寻找质数。 搜了下百度,keywords = “prime” "python"的时候,出来的大部分都是暴力法,容易超时啊啊啊。原以为质数这种常用的东西会有包,结果一个个的全暴力,太没有美感了!(其实我一开始也写的brute force… Let’s start the advanture! In mathematics, the sieve of Eratosthenes is an an原创 2020-12-03 13:42:27 · 203 阅读 · 0 评论 -
[Leetcode] - 力扣第216场周赛
题目列表 1. 检查两个字符串数组是否相等 [3p] 给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。 示例: 输入:word1 = [“ab”, “c”], word2 = [“a”, “bc”] 输出:true 解释: word1 表示的字符串为 “ab” + “c” -> “abc” word2 表示的字符串为 “a” + “bc” -> “ab原创 2020-11-22 20:23:41 · 173 阅读 · 0 评论