left函数

[学习笔记] 杜教筛

女生的网名这么多〃 提交于 2019-12-26 04:43:48
最近沉迷多项式很久了...突然遇到数论题发现不能不过脑子打出杜教筛了... 几十天前学的这玩意吧...比Min_25筛好理解多了... 式子挺容易推的, 放在这里以备快速查找吧 设我们要计算的是 $S(n)=\sum\limits_{k=1}^nf(k)$, 其中 $f(x)$ 是一个积性数论函数, 则我们构造两个容易求和的积性函数 $h$ 和 $g$, 使它们满足: $$h=f*g$$ 于是我们推一推式子: $$ \begin {align} \sum_{i=1}^nh(i)&=\sum_{i=1}^n\sum_{d|i} g(d)f\left(\frac i d\right)\\ &=\sum_{d=1}^ng(d)\sum_{i=1}^{\left\lfloor \frac{n}{d} \right\rfloor}f(i)\\ &=\sum_{d=1}^{n}g(d)\cdot S\left(\left\lfloor \frac n d \right \rfloor \right )\\ &=g(1)\cdot S(n)+\sum_{d=2}^{n}g(d)S\left(\left\lfloor \frac n d \right \rfloor \right )\\\\ g(1)S(n)&=\sum_{i=1}^{n}h(i)-\sum_{d=2}^{n}g(d) S

验证回文字符串

走远了吗. 提交于 2019-12-14 08:06:12
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。 示例 1: 输入: “aba” 输出: True 示例 2: 输入: “abca” 输出: True 解释: 你可以删除c字符。 注意: 字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。 方法:双指针法 通过split()方法将字符串转换成字符串数组arr, 设置两个指针left,right;left默认值为数组第一个元素下标0,right为数组最后一个元素下标arr.length - 1。 while循环遍历left++,right–,在left < right的情况下判断arr[left] 是否等于arr[right]。 如果left === right,说明该字符串已经是回文。 否则将left+1,或right-1;调用函数执行对应的判断 var validPalindrome = function ( s ) { arr = s . split ( '' ) let left = 0 let right = arr . length - 1 while ( left < right && arr [ left ] === arr [ right ] ) { left ++ right -- } if ( left === right ) return true return

颜色分类

折月煮酒 提交于 2019-12-11 02:36:02
题目: 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码库中的排序函数来解决这道题。 示例: 输入: [2,0,2,1,1,0] 输出: [0,0,1,1,2,2] 进阶: 一个直观的解决方案是使用计数排序的两趟扫描算法。 首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。 你能想出一个仅使用常数空间的一趟扫描算法吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sort-colors 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路: 0换到最前面,2换到最后面,1不变. class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ if nums==[]: return nums left=0 right=len(nums)-1 i=0 while i<=right: if nums[i]==0 and i

LeetCode:167.两数之和II

淺唱寂寞╮ 提交于 2019-12-11 01:38:34
题目: 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明 : 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。 示例 : 输入 : numbers = [ 2 , 7 , 11 , 15 ] , target = 9 输出 : [ 1 , 2 ] 解释 : 2 与 7 之和等于目标数 9 。因此 index1 = 1 , index2 = 2 。 源码: class Solution { public int [ ] twoSum ( int [ ] numbers , int target ) { // 双指针做法 int [ ] res = new int [ 2 ] ; int left = 0 ; int right = numbers . length - 1 ; while ( left < right ) { if ( numbers [ left ] + numbers [ right ] == target ) { break ; } if ( numbers [ left ] + numbers [ right ] > target ) {

各种数和各种反演

独自空忆成欢 提交于 2019-12-10 22:27:50
每次问NC做多项式的题需要什么知识点。 各种数。 各种反演。 多项式全家桶。 然后我就一个一个地学知识点。然而还差好多,学到后面的前面的已经忘了(可能是我太菜吧不是谁都是NC啊) 然后发现每个知识点基本只做一道题,肯定会忘,所以再归纳一下。 不附证明只写结论以便查阅,如果需要证明还是自行百度。 第一类斯特林数 含义:$\left[ ^k_n \right]$表示讲n个元素划分为k个环的方案数。 递推公式:$\left[ ^k_n \right] = \left[ ^k_{n-1} \right] \times (n-1)+ \left[ ^{k-1}_{n-1} \right]$ 求一行:$\left[ ^k_n \right]$是多项式$f_n(x) = \prod\limits_{i=0}^{n-1} (x+i)$的k次项系数。这个多项式乘法可以进行分治递归求解,复杂度$O(nlog^2n)$。存在$O(nlogn)$的做法,比较复杂,贴一个 链接 。 应用:$x^{\overline{n}}=\sum\limits_{k=0}^{n} \left[ ^k_n \right] x^k$。比较少见。 第二类斯特林数 含义:$\left\{ ^k_n \right\}$表示讲n个元素划分为k个集合的方案数。 递推公式:$\left\{ ^k_n \right\} =\left\{

Leetcode162. 寻找峰值

夙愿已清 提交于 2019-12-09 23:31:55
峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你可以假设 nums[-1] = nums[n] = -∞。 示例 1: 输入: nums = [1,2,3,1] 输出: 2 解释: 3 是峰值元素,你的函数应该返回其索引 2。 示例 2: 输入: nums = [1,2,1,3,5,6,4] 输出: 1 或 5 解释: 你的函数可以返回索引 1,其峰值元素为 2; 或者返回索引 5, 其峰值元素为 6。 说明: 你的解法应该是 O(logN) 时间复杂度的。 二分查找 算法 我们可以将 numsnums 数组中的任何给定序列视为交替的升序和降序序列。通过利用这一点,以及“可以返回任何一个峰作为结果”的要求,我们可以利用二分查找来找到所需的峰值元素。 在简单的二分查找中,我们处理的是一个有序数列,并通过在每一步减少搜索空间来找到所需要的数字。在本例中,我们对二分查找进行一点修改。首先从数组 numsnums 中找到中间的元素 midmid。若该元素恰好位于降序序列或者一个局部下降坡度中(通过将 nums[i]nums[i] 与右侧比较判断),则说明峰值会在本元素的左边。于是,我们将搜索空间缩小为 midmid 的左边

数据库 left()、length()函数

爱⌒轻易说出口 提交于 2019-12-09 15:51:18
数据库 left()、length()函数 1.Mysql的length()函数:   length()函数主要用于计算字符串的长度,用法也很简单:length(要计算的字符串) 就可以计算出字符串的长度了 1.Mysql的left()函数:   left()函数主要用于字符串的截取,语法同样也很简单。left(要截取的字符串,参数) ,其中参数为要揭取的字符串的个数 来源: https://www.cnblogs.com/chengqi123/p/12011307.html

每日一题_191217

…衆ロ難τιáo~ 提交于 2019-12-09 14:40:18
已知函数 \(f(x)=x{\ln}x-2mx\) \((m\in\mathbb{R})\) . \((1)\) 求函数 \(f(x)\) 在区间 \(\left[\sqrt{\mathrm{e}},\mathrm{e}^2\right]\) 上的最小值; \((2)\) 若 \(x_1,x_2\in\left(\dfrac{1}{\mathrm{e}},+\infty\right)\) ,求证: \(x_1x_2<\left(x_1+x_2\right)^{2+\frac{x_1}{x_2}+\frac{x_2}{x_1}}\) . 解析: \((1)\) 对 \(f(x)\) 求导可得 \[ f'(x)={\ln}x+1-2m,x>0.\] 因此 \(f(x)\) 在 \(\left(0,\mathrm{e}^{2m-1}\right)\) 单调递减,在 \(\left[ \mathrm{e}^{2m-1},+\infty\right)\) 单调递增. 情形一 若 \(m<\dfrac{3}{4}\) ,则 \(\mathrm{e}^{2m-1}<\mathrm{e}^{\frac{1}{2}}\) ,此时所求最小值为 \(f\left(\sqrt{\mathrm{e}}\right)=\left(\dfrac{1}{2}-2m\right)\sqrt{\mathrm{e}}\

Leetcode 278:第一个错误版本

被刻印的时光 ゝ 提交于 2019-12-09 14:03:53
题目描述: 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。 你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。 示例: 给定 n = 5,并且 version = 4 是第一个错误的版本。 调用 isBadVersion(3) -> false 调用 isBadVersion(5) -> true 调用 isBadVersion(4) -> true 所以,4 是第一个错误的版本。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/first-bad-version 思路:使用二分查找,但是这里的判断题目,第一个错误的版本题意实在有点看不懂,要求应该是判断出现错误的第一个版本号,而不是第一个返回false 的版本号 var solution = function(isBadVersion) { /** * @param {integer} n Total

LeetCode All in One 题目讲解汇总(持续更新中...)

自闭症网瘾萝莉.ら 提交于 2019-12-09 13:59:34
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. For example, "A man, a plan, a canal: Panama" is a palindrome. "race a car" is not a palindrome. Note: Have you consider that the string might be empty? This is a good question to ask during an interview. For the purpose of this problem, we define empty string as valid palindrome. 验证回文字符串是比较常见的问题,所谓回文,就是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。但是这里,加入了空格和非字母数字的字符,增加了些难度,但其实原理还是很简单:只需要建立两个指针,left和right, 分别从字符的开头和结尾处开始遍历整个字符串,如果遇到非字母数字的字符就跳过,继续往下找,直到找到下一个字母数字或者结束遍历,如果遇到大写字母,就将其转为小写