上一页 1 2 3 4 5 6 7 ··· 22 下一页
摘要: 思路: 这个题可以在421. 数组中两个数的最大异或值建立的字典树基础上完成。 这道题多了两个要求,第一个是nums里小于queries[i][1]得元素与queries[i][0]的元素相异或并取最大值,返回的结果数组中结果的存放顺序要按照queries的顺序。 那么我们考虑第一个要求,如果我们每 阅读全文
posted @ 2021-05-23 23:51 Mrsdwang 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 思路: 暴力很明显,两重for循环即可完成。 如何优化成O(n),自己想了想,两数异或的结果是在(X-Y,X+Y)之间的,然后我就直接for找到一个最大的数,然后用其他的数与他异或取最大的,还是错了,如2,10,8,2 ^ 8 =10,10 ^2 =8。 然后就看了题解,用了字典树的结构。 字典树简 阅读全文
posted @ 2021-05-23 17:48 Mrsdwang 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 思路: 这个题感觉更像是数学推导,这里我注意到题目的“假设两个玩家每步都是用最优解”,疑问这个最优解是个什么意思。 首先我们来推导一下,假如去掉一个数让剩下的数异或为0,根据异或的性质:相同的数异或为0 and 任何数与0异或还是本身 可以得到下面的式子: xorsum是所有数异或的结果,nums[ 阅读全文
posted @ 2021-05-22 21:34 Mrsdwang 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 思路: 一开始是打算用hash表来记录每个字母代表的数字的,但是想了一下好像直接if判断来加也可以,然后就开始if了。 然后想判断IV IX这类的的时候判断条件设置的是i!=n-1&&s[i+1]='V'这样的,也是能做的,但是if太多了。 我这时候并没有想到IV这种情况可以概括为小的数放在大的数左 阅读全文
posted @ 2021-05-21 13:35 Mrsdwang 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 思路: 虽然能看出来是动态规划了,但是还是写不出。我想要如何判断交叉呢,官方题解用的动规 就很巧妙,没有直接涉及判断交叉,但却解决了这个问题。 dp[i][j]定义为nums1[0:i]连接nums2[0:j]的最大连线数 我们是要两重for循环的 ,对于dp[i][j],我们判断nums1[i]= 阅读全文
posted @ 2021-05-21 11:52 Mrsdwang 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 思路: DFS寻找x和y,并记录他们所在的深度。 因为题目要求深度相同,父亲节点不同,所以我们还需要记录他们的父亲节点。 所以我们对x和y都建立一些信息, int x; TreeNode* x_fa; int x_depth; bool x_found; int y; TreeNode* y_fa; 阅读全文
posted @ 2021-05-21 00:39 Mrsdwang 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 思路: 求前k大的,并且要记录出现的次数,那么就想到是堆+hash表了。 然后就是hash表记录次数的同时加进堆里,但是这里就出现一个问题,当出现的次数一样的时候没法按字母大小排序。所以我们得自己写堆的排序函数: 看了官方题解,使用的lambda函数。 方法如下 auto cmp = [](cons 阅读全文
posted @ 2021-05-20 23:12 Mrsdwang 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 思路: 还是前缀异或,只是这次变成了二维。 求第n大的数,我想的直接用小顶堆,限制它元素个数为k,那么最终留下来的就是最大的k个数,堆顶就是第k大的数了。 如果堆没有满就加进堆里,如果满了就判断要加入的元素是否大于堆顶,大于就pop再push. 也可以排序再取第k+1个元素,也可以用快速选择算法来找 阅读全文
posted @ 2021-05-19 20:16 Mrsdwang 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 思路: 类似的题做过了,一个优化算法就是(s0s1s2...si-1)(s0s1s2....si-1....sn)=(si...sn). 因此我们就能计算出前缀异或的结果从而将暴力算法O(n4)优化成O(n^3) 代码: class Solution { public: int countTripl 阅读全文
posted @ 2021-05-19 17:22 Mrsdwang 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 思路: 当获取x后,x+1和x-1大小的元素不能再取,我们得到的点数为x*x的个数。 因此我们需要记录每个nums元素的个数,同时获得排序后的nums中出现过的元素,只要一个,用来判断上次取的数和这次取的数是否差为1或-1。 我们用hash表count来记录元素出现的次数,用dp数组存放出现过的元素 阅读全文
posted @ 2021-05-13 19:02 Mrsdwang 阅读(52) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 22 下一页