上一页 1 2 3 4 5 6 ··· 17 下一页
摘要: 解题思路:因为primeFactors比较大,所以需要使用快速幂。 class Solution: def quick_pow(self,base,x): ans = 1 while x>0: if x%2==1: ans*=base%self.mod base=(base*base)%self.m 阅读全文
posted @ 2021-03-28 16:50 ISGuXing 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 问题的起因是因为在做LeetCode5714题的时候,对于字符串拼接使用了 ans = ans+s[i] 提交后超时了,改成 ans+=s[i] 就可以通过了,而且用c++好像也有这个问题,在此记录一下。如果需要频繁的拼接字符串,尽量使用‘+=’或者 join 函数连接字符串,少使用 ‘+’。 阅读全文
posted @ 2021-03-28 16:16 ISGuXing 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题意:题目的意思是,给定一个初始状态perm,然后对perm的每个元素按照上述的规则进行变换操作。问:perm经过多少次这种操作能够变回初始的perm。 解题思路:第一种方法就是模拟,一直变换,直到变成原来的样子。 第二种解法:置换群与不相交循环,如图 code: #解法1: class Solut 阅读全文
posted @ 2021-03-28 16:09 ISGuXing 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 解题思路:根据题意,我们首先首先要找到所有的极大值点,同时记录当前极大值点的左边的最小值。遍历所有点,看是否能够满足132条件。虽然记录极大值点的地方可以优化,减小比较的次数,但是由于我们不知道极大值点有可能有多少个,复杂度可能还是会比较大。 最关键的优化地点是如何减少比较的次数,我们需要用单调栈维 阅读全文
posted @ 2021-03-24 16:03 ISGuXing 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 解题思路:定义一个方向数组,用栈或者直接从左上角的起点进行DFS,如果碰到下一步无法访问,调整方向,继续遍历,直到所有元素都访问了。 (这道题好有历史感,到现在还记得我读大一的时候参加院队培训的时候做的,当时还不会搜索,只会找规律,没想到找了好长时间的规律真让做对了,当时还是很兴奋。后来蓝桥杯好像也 阅读全文
posted @ 2021-03-15 13:06 ISGuXing 阅读(527) 评论(0) 推荐(0) 编辑
摘要: 解题思路:把所有元素存成数组,设置一个全局下标next,表示当前节点如果要继续遍历应当从数组的哪个位置开始,然后从下标 0 开始DFS。如果DFS返回真并且next下标等于数组的长度,说明元素已经全部访问了,并且可以构成一棵二叉树;否则不可以构成。 class Solution: def dfs(s 阅读全文
posted @ 2021-03-12 13:40 ISGuXing 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 解题思路:两个双端队列模拟,一个存放操作数 a,另一个存放操作符 op,如果找到另一个操作数b,判断操作队列队尾是否是*/,是的话执行 a(*or/)b。遍历完字符串,如果操作符队列非空,说明还有+-操作未执行,顺序遍历操作符队列。 1 class Solution: 2 def calculate 阅读全文
posted @ 2021-03-11 11:12 ISGuXing 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 解题思路:有两个问点:1、如何快速当前字符串哪些的字串是回文;2、如何组合这些字串达到分割次数最少 针对问点1,可以开辟一个二维布尔数组 a[][],a[i][j]表示以索引i为起点,j为结束位置的字符串是否是回文串。那么有递推公式a[i][j] = a[i+1][j-1] &&(s[i]==s[j 阅读全文
posted @ 2021-03-10 18:20 ISGuXing 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 1、双栈模拟,一个用来存数,一个用来存操作符。需要考虑 '('后面紧跟'+'、'-'这种情况 2、递归:遇到左括号开始递归,遇到右括号结束递归,返回值。 1 class Solution: 2 def calculate(self, s): 3 s = '('+s+')' 4 stack 阅读全文
posted @ 2021-03-10 17:14 ISGuXing 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 解题思路:比赛的是没读懂题意,这题求的是起点1到n路径序列数,但是路径序列上的相邻两个点 i, i+1 之间应该满足 i、i+1 到终点的最短路low[i] > low[i+1]。 因此需要先以终点开始,跑一遍dijkstra算法,考虑时间复杂度,使用邻接表加优先队列优化。计算得到最短路 low 数 阅读全文
posted @ 2021-03-08 20:24 ISGuXing 阅读(237) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 17 下一页