摘要: 假设现在所求为平方根,即函数 x^2 = input 的解,即 x^2 - input = 0 的解. 令 f(x) = x^2 - input 牛顿迭代公式: 即假设 X_n 为函数 f(x) 的第 n 次解,那么第 n + 1 次解就是 X_n - f(X_n) / f'(X_n) 其中 f'( 阅读全文
posted @ 2021-09-21 19:18 rookie_Acmer 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 双指针:两个下标分别指向 version1 和 version2,每一次都取一段版本号进行比较即可。题目说了所有修订号都可以存储在 32 位 int 中,所以直接转成整数比较就行. 此外需要特殊注意样例 2,这与字符串字典序比较并不相同。 如代码中:while 的循环条件写为 l1 < versio 阅读全文
posted @ 2021-09-21 18:59 rookie_Acmer 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 利用一个空余的结点来区别判空和判满。 判空则是 return l == r; 判满则是 return (r + 1) % queSize == l; 如果空间大小不开 k + 1,且 queSize 不为 k + 1,那么 当 r 为 k - 1 时,只是用到了 [0, k - 2] 个位置,并且 阅读全文
posted @ 2021-09-21 16:03 rookie_Acmer 阅读(24) 评论(0) 推荐(0) 编辑
摘要: dp[i] 表示 s 前 i 个可以构成的方案数。 如果 s[i] == '0' 那么他的上一位只能是 '1' 或者 '2',此时 dp[i] += dp[i - 2]; 如果 s[i] != '0' 那么他首先可以自成以为,即 dp[i] += dp[i -1],如果他与上一位构成的数是 11 ~ 阅读全文
posted @ 2021-09-21 14:30 rookie_Acmer 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 首先很容易想到的一种做法就是:用 vector 将所以树结点按照中序遍历的方式存下来,然后遍历 vector 链接即可。(二叉搜索树中序遍历是按 val 顺序保存的) 也就是说: void solve(Node *root) { if(!root) return ; solve(root -> le 阅读全文
posted @ 2021-09-21 13:36 rookie_Acmer 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 与 https://www.cnblogs.com/rookie-acmer/p/15068376.html 的不同之处在于有重复元素, 对于重复元素的处理的方式可参考https://www.cnblogs.com/rookie-acmer/p/15270284.html 上面两个链接结合,就可以解 阅读全文
posted @ 2021-09-21 10:09 rookie_Acmer 阅读(19) 评论(0) 推荐(0) 编辑
摘要: dp,一开始想成了三维dp,dp[i][j][k] 表示 s3 前 i 个是否能由 s1 前 j 个和 s2 前 k 个构成, 最后其实是第一维不需要,直接 dp[i][j] 表示 s1 前 i 个和 s2 前 j 个是否能够构成 s3 前 i + j 个即可。 转移方程:dp[i][j] = (d 阅读全文
posted @ 2021-09-21 00:06 rookie_Acmer 阅读(16) 评论(0) 推荐(0) 编辑