切蛋糕的最小开销 II(hard)做题过程数据量变大了,然后试了一下就改数据类型,做I时用的贪心+优先队列也能过,但表现很差。就是其实不用优先队列也行。
算法概述原题
本题要求为给出对二维矩阵(蛋糕)不同轴线上横切竖切的代价,要求计算分成1*1的最小代价。一样的贪心,但是不用优先队列。
时间复杂度为
空间复杂度为
JAVA123456789101112131415161718192021...
🚀竞赛
使每一列严格递增的最少操作次数做题过程一次提交失败,因为之前只考虑了升序的情况。
算法概述本题要求为将给出二维矩阵中的每一列变为升序,每次操作可对某一列中元素自增一次,计算最少操作次数。直接模拟即可。
时间复杂度为
空间复杂度为
JAVA1234567891011121314151617181920class Solution { public int minimumOp...
被围绕的区域(medium)做题过程大概清楚肯定还是DFS和BFS都可以,但问题是该怎么组织代码结构,完全没有思路。而且抄都能抄错好几次。
算法概述原题
本题要求为给出二维矩阵,需要通过原地操作将其中被’X’完全包围的’O’转换为’X’(在边界不算)。DFS看上去好写一些。
时间复杂度为O(n*m)
空间复杂度为O(n*m)
JAVA123456789101112131415161718...
二叉树中的链表(medium)做题过程DFS很容易写,但是后面又陷入了分类讨论的思维怪圈,最后又得到了必须要用回溯的结论,实际上从头开始回溯就是枚举了。
算法概述原题
本题要求为给出一棵树和一个链表,判断树中是否有与链表相同的路径。使用DFS进行枚举。
时间复杂度为 :就是枚举
空间复杂度为
JAVA1234567891011121314151617181920212223242526c...
通过投票对团队排名(medium)做题过程感觉又要用堆又要用哈希表的很麻烦,没想到简便思路。
算法概述原题
本题要求为给出字符串数组用于表示投票结果,然后根据字符串中的名次以及该名次的出现次数决定最终结果。使用 哈希表 存储每个排名对象的名次。
时间复杂度为:填充哈希表的时间和排序(排序+比较)的时间
空间复杂度为
JAVA12345678910111213141516171819202...
分割数组(easy)做题过程哈希表,很直接,但是又用到了不必要的Map.Entry<>和Map.entrySet(),其实不用。
算法概述原题
本题要求为判断数组(偶数长度)是否能被分为两个不含重复元素的数组。用 哈希表 存储每个数字的出现频次即可。
时间复杂度为O(n)
空间复杂度为O(n)
JAVA12345678910111213class Solution {...
查询数组中元素的出现位置(medium)做题过程easy
算法概述原题
本题要求为给定一个数据数组和一个查询数组,以及一个查询值,根据查询数组返回数据数组中的不同序号的下标。
时间复杂度为O(n+q)
空间复杂度为O(n):最坏
JAVA123456789101112131415class Solution { public int[] occurrencesOfElem...
字符串及其反转中是否存在同一字符串(easy)
做题过程
用哈希表,和两数之和一个思路。
算法概述
原题
本题要求为如题所示。
时间复杂度为O(n)
空间复杂度为O(n)
JAVA
12345678910111213141516171819202122232425class Solution { public boolean isSubstringPresent(...
相同的树(easy)做题过程不太记得了,反正就是选一个遍历方式一个一个比对,DFS或者BFS。
算法概述原题
本题要求为比较两个树是否相同。
时间复杂度为O(min(n,m)):不一样就是比完一棵较小的树就行
空间复杂度为O(min(n,m)):递归
JAVA12345678910111213class Solution { public boolean isSameTr...
切蛋糕的最小总开销 I(medium)做题过程用贪心+优先队列的思路过了一半的用例,又小修了一下,过了,复杂度上应该优于动态规划的,但是测试用例给出比动态规划慢,不知道为什么。
算法概述原题
本题要求为给出对二维矩阵(蛋糕)不同轴线上横切竖切的代价,要求计算分成1*1的最小代价。我选择用 贪心+优先队列 。
时间复杂度为O(nlogn+mlogm):遍历每个切法,然后存到堆里面排序,再拿...