数学
文章平均质量分 56
yuzhang_zy
现在的我不是最好的我,未来的我才是最好的我,每一篇博客都记录着我的成长
展开
-
650 只有两个键的键盘(递推、数学-分解质因数)
1. 问题描述:最初在一个记事本上只有一个字符 'A'。你每次可以对这个记事本进行两种操作:Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。Paste (粘贴) : 你可以粘贴你上一次复制的字符。给定一个数字n。你需要使用最少的操作次数,在记事本中打印出恰好n个 'A'。输出能够打印出n个 'A' 的最少操作次数。示例 1:输入: 3输出: 3解释:最初, 我们只有一个字符 'A'。第 1 步, 我们使用 Copy All ...原创 2021-07-31 23:19:00 · 150 阅读 · 0 评论 -
640 求解方程(模拟、数学)
1. 问题描述:求解一个给定的方程,将x以字符串"x=#value"的形式返回。该方程仅包含'+',' - '操作,变量x和其对应系数。如果方程没有解,请返回“No solution”。如果方程有无限解,则返回“Infinite solutions”。如果方程中只有一个解,要保证返回值x是一个整数。示例 1:输入: "x+5-3+x=6+x-2"输出: "x=2"示例 2:输入: "x=x"输出: "Infinite solutions"示例 3:输入: "2x=x"...原创 2021-07-31 09:08:38 · 192 阅读 · 0 评论 -
483 最小好进制(数学、二分查找)
1. 问题描述:对于给定的整数 n, 如果n的k(k>=2)进制数的所有数位全为1,则称k(k>=2)是 n 的一个好进制。以字符串的形式给出 n, 以字符串的形式返回 n 的最小好进制。示例 1:输入:"13"输出:"3"解释:13 的 3 进制是 111。示例 2:输入:"4681"输出:"8"解释:4681 的 8 进制是 11111。示例 3:输入:"1000000000000000000"输出:"999999999999999999"解释:10...原创 2021-07-10 16:31:46 · 221 阅读 · 0 评论 -
462 最少移动次数使数组元素相等 II(绝对值不等式)
1. 问题描述:给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1。 您可以假设数组的长度最多为10000。例如:输入:[1,2,3]输出:2说明:只有两个动作是必要的(记得每一步仅可使其中一个元素加1或减1):[1,2,3] => [2,2,3] => [2,2,2]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-moves-to-equal-...原创 2021-07-06 12:13:22 · 154 阅读 · 0 评论 -
441 排列硬币(模拟、解方程、二分)
1. 问题描述:你总共有n枚硬币,你需要将它们摆成一个阶梯形状,第k行就必须正好有k枚硬币。给定一个数字n,找出可形成完整阶梯行的总行数。n是一个非负整数,并且在32位有符号整型的范围内。示例 1:n = 5硬币可排列成以下几行:¤¤ ¤¤ ¤因为第三行不完整,所以返回2.示例 2:n = 8硬币可排列成以下几行:¤¤ ¤¤ ¤ ¤¤ ¤因为第四行不完整,所以返回3.来源:力扣(LeetCode)链接:https://leetcode-cn.com...原创 2021-06-30 22:27:17 · 170 阅读 · 0 评论 -
x / k向上取整转换为向下取整
有的时候需要向上取整一般的做法是直接判断余数是否等于0来决定是否需要加1,其实我们可以使用下面的公式将向上取整转换为向下取整:if __name__ == '__main__': x, k = 10, 3 print((x + k - 1) // k) x, k = 9, 3 print((x + k - 1) // k)...原创 2021-06-22 21:03:51 · 719 阅读 · 1 评论 -
400 第 N 位数字(数学)
1. 问题描述:在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 位数字。注意:n 是正数且在 32 位整数范围内(n < 2 ^ 31)。示例 1:输入:3输出:3示例 2:输入:11输出:0解释:第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是 0 ,它是 10 的一部分。来源:力扣(LeetCode)链接:https://leetcode-cn.com原创 2021-06-22 20:31:31 · 182 阅读 · 0 评论 -
396 旋转函数(找规律)
1. 问题描述:给定一个长度为 n 的整数数组A。假设Bk是数组A顺时针旋转 k 个位置后的数组,我们定义A的“旋转函数”F为:F(k) = 0 * Bk[0] + 1 * Bk[1] + ... + (n-1) * Bk[n-1]。计算F(0), F(1), ..., F(n-1)中的最大值。注意:可以认为 n 的值小于 10^5。示例:A = [4, 3, 2, 6]F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 ...原创 2021-06-22 10:14:53 · 189 阅读 · 0 评论 -
365 水壶问题(递归、数学-裴蜀定理)
1. 问题描述:有两个容量分别为x升和 y升的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好z升的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的z升水。你允许:装满任意一个水壶 清空任意一个水壶 从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1:输入: x = 3, y = 5, z = 4输出: True示例 2:输入: x = 2, y = 6, z = 5输出: False来源:力扣(LeetCode)链接:https://..原创 2021-06-17 12:05:11 · 677 阅读 · 0 评论 -
357 计算各个位数不同的数字个数(数学)
1. 问题描述:给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10 ^ n 。示例:输入: 2输出: 91解释: 答案应为除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 区间内的所有数字。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-numbers-with-unique-digits2. 思路分析:分析题目可以知道n最大是10才是.原创 2021-06-16 21:05:16 · 390 阅读 · 0 评论 -
343 整数拆分(数学、动态规划-递推)
1. 问题描述:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明:你可以假设n不小于 2 且不大于 58。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/integer-...原创 2021-06-13 23:15:44 · 760 阅读 · 1 评论 -
第十二届蓝桥杯国赛纯质数(埃氏筛法)
1. 问题描述:如果一个正整数只有 1 和它本身两个约数,则称为一个质数(又称素数)。前几个质数是: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, · · · 。如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如: 2,3, 5, 7, 23, 37 都是纯质数,而 11, 13, 17, 19, 29, 31 不是纯质数。当然 1, 4, 35也不是纯质数。请问,在 1 到 20210605 中,有多少个纯质数?2. 思路分析:分析题目可以知原创 2021-06-05 23:13:09 · 1735 阅读 · 4 评论 -
埃氏筛法求解质数模板
一般求解1~n范围内的质数常见的有两种方法:线性筛和埃氏筛法,对于n不是特别大的时候线性筛还是有效的,但是一旦当n超过某个规模的时候线性筛就会变得很慢,有可能计算不出来,这个时候就需要使用到埃氏筛法,埃氏筛法的一个核心是将声明一个长度为n的标记数组,将质数对应的倍数全部标记为1,质数的倍数肯定是合数,所以只有当前位置对应的值为0的时候说明当前位置i是一个素数,将其加入到结果集中即可,在java语言中埃氏筛法对于n = 10 ^ 8内的质数还是可以计算出来的(),比10 ^ 8大一点的数字需要几秒就可以计算出原创 2021-06-05 22:18:48 · 193 阅读 · 0 评论 -
319 灯泡开关(数学-求解约数的个数)
1. 问题描述:初始时有n个灯泡处于关闭状态。对某个灯泡切换开关意味着:如果灯泡状态为关闭,那该灯泡就会被开启;而灯泡状态为开启,那该灯泡就会被关闭。第 1 轮,每个灯泡切换一次开关。即,打开所有的灯泡。第 2 轮,每两个灯泡切换一次开关。 即,每两个灯泡关闭一个。第 3 轮,每三个灯泡切换一次开关。第i 轮,每i个灯泡切换一次开关。 而第n轮,你只切换最后一个灯泡的开关。找出n轮后有多少个亮着的灯泡。示例 1:输入:n = 3输出:1解释:初始时, 灯...原创 2021-06-04 23:19:26 · 200 阅读 · 0 评论 -
279 完全平方数(完全背包、数学)
1. 问题描述:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。给你一个整数 n ,返回和为 n 的完全平方数的最少数量 。完全平方数是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。示例1:输入:n = 12输出:3解释:12 = 4 + 4 + 4示例 2:输入:n = 13输出:2解释:13..原创 2021-05-21 21:43:55 · 474 阅读 · 0 评论 -
258 各位相加(模拟、数学)
1. 问题描述:给定一个非负整数num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-digits2. 思路分析:分析题目可以知道最容易想到的是根据题目的..原创 2021-05-20 09:16:24 · 205 阅读 · 0 评论 -
104 货仓选址(绝对值不等式)
1. 问题描述:在一条数轴上有 N 家商店,它们的坐标分别为 A1∼AN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式第一行输入整数 N。第二行 N 个整数 A1∼AN。输出格式输出一个整数,表示距离之和的最小值。数据范围1≤N≤100000,0≤Ai≤40000输入样例:46 2 9 1输出样例:12来源:https://www.acwing.com/problem/c原创 2021-05-07 15:06:08 · 412 阅读 · 0 评论 -
蓝桥杯阶乘位数(数学)
1. 问题描述:9的阶乘等于:362880,它的二进制表示为:1011000100110000000这个数字共有19位。请你计算,9999 的阶乘的二进制表示一共有多少位?输出输出一个整数表示答案来源:http://oj.ecustacm.cn/problem.php?id=13142. 思路分析:一开始的时候没有什么思路感觉这么大的数字计算阶乘出来肯定溢出了,于是在网上找了一下相关的题解,发现解决这道题目使用到的一个数学知识是:一个数n的m进制的的位数r为:r = logm(n)...原创 2021-04-15 21:15:07 · 396 阅读 · 0 评论 -
剑指 Offer 14- I 剪绳子(数学推导)
1. 问题描述:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例2:输入: 10输出: 36解释: 10 = 3 + .原创 2021-01-25 21:38:49 · 188 阅读 · 0 评论 -
963 最小面积矩形 II(数学-判断是否四个点能否构成矩形)
1. 问题描述:给定在 xy 平面上的一组点,确定由这些点组成的任何矩形的最小面积,其中矩形的边不一定平行于 x 轴和 y 轴。如果没有任何矩形,就返回 0。示例 1:输入:[[1,2],[2,1],[1,0],[0,1]]输出:2.00000解释:最小面积的矩形出现在 [1,2],[2,1],[1,0],[0,1] 处,面积为 2。示例 2:输入:[[0,1],[2,1],[1,1],[1,0],[2,0]]输出:1.00000解释:最小面积的矩形出现在 [1,0],[原创 2020-11-23 22:15:34 · 1134 阅读 · 0 评论 -
365 水壶问题(广度优先搜索、数学推导-裴蜀定理)
1. 问题描述:有两个容量分别为x升和 y升的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好z升的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的z升水。、你允许:装满任意一个水壶 清空任意一个水壶 从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1:(From the famous"Die Hard"example)输入: x = 3, y = 5, z = 4输出: True示例 2:输入: x = 2, y = 6, z = 5...原创 2020-11-07 17:32:02 · 881 阅读 · 0 评论 -
96 不同的二叉搜索树(动态规划、数学)
1. 问题描述:给定一个整数n,求以1 ...n为节点组成的二叉搜索树有多少种?输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2...原创 2020-10-17 10:17:36 · 222 阅读 · 0 评论 -
1201 丑数 III(二分查找、容斥定理)
1. 问题描述:请你帮忙设计一个程序,用来找出第n个丑数。丑数是可以被a或b或c整除的正整数。示例 1:输入:n = 3, a = 2, b = 3, c = 5输出:4解释:丑数序列为 2, 3, 4, 5, 6, 8, 9, 10... 其中第 3 个是 4。示例 2:输入:n = 4, a = 2, b = 3, c = 4输出:6解释:丑数序列为 2, 3, 4, 6, 8, 9, 10, 12... 其中第 4 个是 6。示例 3:输入:n =...原创 2020-07-21 23:05:50 · 255 阅读 · 0 评论 -
1232 缀点成线(数学)
1. 问题描述:在一个XY 坐标系中有一些点,我们用数组coordinates来分别记录它们的坐标,其中coordinates[i] = [x, y]表示横坐标为 x、纵坐标为 y的点。请你来判断,这些点是否在该坐标系中属于同一条直线上,是则返回 true,否则请返回 false。示例 1:输入:coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]输出:true示例 2:输入:coordinates = [[1,...原创 2020-07-08 16:45:01 · 293 阅读 · 0 评论 -
816 模糊坐标(python中的笛卡尔乘积)
1. 问题描述:我们有一些二维坐标,如"(1, 3)"或"(2, 0.5)",然后我们移除所有逗号,小数点和空格,得到一个字符串S。返回所有可能的原始字符串到一个列表中。原始的坐标表示法不会存在多余的零,所以不会出现类似于"00", "0.0", "0.00", "1.0", "001", "00.01"或一些其他更小的数来表示坐标。此外,一个小数点前至少存在一个数,所以也不会出现“.1”形式的数字。最后返回的列表可以是任意顺序的。而且注意返回的两个数字中间(逗号之后)都有一个空格。示...原创 2020-06-25 23:25:28 · 392 阅读 · 0 评论 -
1276 不浪费原料的汉堡制作方案(二元一次方程)
1. 问题描述:圣诞活动预热开始啦,汉堡店推出了全新的汉堡套餐。为了避免浪费原料,请你帮他们制定合适的制作计划。给你两个整数tomatoSlices和cheeseSlices,分别表示番茄片和奶酪片的数目。不同汉堡的原料搭配如下:巨无霸汉堡:4 片番茄和 1 片奶酪小皇堡:2 片番茄和1 片奶酪请你以[total_jumbo, total_small]([巨无霸汉堡总数,小皇堡总数])的格式返回恰当的制作方案,使得剩下的番茄片tomatoSlices和奶酪片cheeseSli...原创 2020-06-24 11:12:25 · 483 阅读 · 0 评论 -
1339 分裂二叉树的最大乘积(dfs、数学)
1. 问题描述:给你一棵二叉树,它的根为root 。请你删除 1 条边,使二叉树分裂成两棵子树,且它们子树和的乘积尽可能大。由于答案可能会很大,请你将结果对 10^9 + 7 取模后再返回。示例 1:输入:root = [1,2,3,4,5,6]输出:110解释:删除红色的边,得到 2 棵子树,和分别为 11 和 10 。它们的乘积是 110 (11*10)示例 2:输入:root = [1,null,2,3,4,null,null,5,6]输出:90解释:移除红色.原创 2020-06-05 09:32:37 · 373 阅读 · 0 评论 -
1362 最接近的因数(数学)
1. 问题描述:给你一个整数num,请你找出同时满足下面全部要求的两个整数:两数乘积等于 num + 1或num + 2以绝对差进行度量,两数大小最接近你可以按任意顺序返回这两个整数。示例 1:输入:num = 8输出:[3,3]解释:对于 num + 1 = 9,最接近的两个因数是 3 & 3;对于 num + 2 = 10, 最接近的两个因数是 2 & 5,因此返回 3 & 3 。示例 2:输入:num = 123输出:[5,25]示例 ...原创 2020-06-03 16:47:31 · 373 阅读 · 0 评论 -
整除问题
在数学中可能会经常使用1到某个数的范围内能够被另外一个数整除的个数,这个时候只需要将这个数除以另外一个数向下取整即可,比如1000以内能够被2整除的个数是:⌊1000 / 2⌋ = 500个...原创 2020-03-05 16:12:34 · 312 阅读 · 0 评论 -
质因数的分解
1. 质因数的分解可以以判断是否为素数的情况的思路下进行进一步处理,因为我们知道假如一个数字不是素数那么这个数字肯定有约数,其中可以使用到map这个数据结构用来计数某个因子出现了多少次,但是map映射没有排序效果,所以后来我采用了TreeMap这个数据结构,效果与map一样它是自带排序效果的,不用自己对得到的质因数的结果进行排序,具体的代码如下:import java.util.Map;i...原创 2018-09-25 13:20:39 · 764 阅读 · 0 评论 -
青蛙的约会-求解模线性同余方程
1. 问题描述:两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮...原创 2018-09-16 20:13:02 · 1178 阅读 · 0 评论 -
欧几里得算法扩展之裴蜀公式-求解线性方程的一个解
1. 对任意整数a,b和他们的最大公约数d,关于未知数x和y的线性丢番图方程(称为裴蜀等式)ax+by=m有整数解的时候当且仅当m是d的倍数裴蜀公式有解的时候必然有无穷多个整数解,每组解x,y都称为裴蜀数,可以用欧几里得算法求得特别地ax + by = 1 有整数解当且仅当整数a和b互为素数在求解线性方程组ax + by = k的时候求解最大公约数由其中的过程递推出如下的规律:...原创 2018-09-14 22:19:45 · 1403 阅读 · 1 评论 -
巧用三进制解决天平称重问题
1. 问题描述:用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果有无限个砝码,但它们的重量分别是1,3,9,27,81,……等3的指数幂神奇之处在于用它们的组合可以称出任意整数重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户给定的重量,给出砝码组合方案,重量<1000000。例如:用户输入:5程序输出:9-3-1用户输入:...原创 2018-09-13 22:35:11 · 1594 阅读 · 0 评论 -
位运算-判断一个数是否为2的整数次方
1. 问题描述:是不是2的整数次方:用一条语句判断一个整数是不是2的整数次方2. 思路分析:2的整数次方对应的二进制的最高位上只有一个1,那么将该数字减去1再与该数字进行与运算,如果是2的整数次方,那么结果一定为0下面是代码实现:import java.util.Scanner;public class Main { public static void main(String[...原创 2018-08-15 21:46:14 · 1677 阅读 · 0 评论 -
位运算(输出该数字二进制表示中1的个数)
1. 问题描述: 请实现一个函数,输入一个整数,输出该数字二进制表示中1的个数2. 思路分析① 可以通过位运算将一个数字进行二进制位数的运算,第一种方法是将1向左移n位,而且从低位开始往右移动比如:1011011从最右边的位开始移动,1移动的位数为从右边算起,移动n位,n从0开始,左移n位后的数字与原来的数字1011011进行与运算,保留了该位上的1,消除掉了其他的1...原创 2018-08-15 21:38:59 · 1284 阅读 · 0 评论 -
判断是否为素数(质数)
判断是否为素数:一个数假如不是素数的话那么它肯定会有因子,而最大因子的平方会小于等于这个数字,具体的代码如下:import java.util.Scanner;public class Main { //因为假如不是素数的话2~根号n之间一定存在有约数 //约数都是小于等于根号n的 public static void main(String[] args) { Scanner ...原创 2018-09-25 13:23:41 · 259 阅读 · 0 评论 -
第十万零个素数
1. 有时候不是判断某个素数而是需要求解第k个素数,这个时候如果使用传统的方法来判断是否是素数来计数的话耗时比较多,在这个情况下我们解决这个问题之前需要了解素数定理素数定理描述素数的大致分布情况, 一个个地看,素数在正整数中的出现没有什么规律。可总体地看,素数的个数有规可循。对正实数x,定义π(x)为不大于x的素数个数。数学家找到了一些函数来估计π(x)的增长。以下是第一个这样的估计:π(x)...原创 2018-09-25 19:53:44 · 510 阅读 · 0 评论 -
快速求解幂运算-连续平方
1. 幂运算可以使用连续平方的方法来解决,但是求得结果只能是2的整数次方那么剩下的幂指数的求解通过递归来解决,使用具体的代码如下:import java.util.Scanner;public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); long...原创 2018-09-25 21:43:25 · 1236 阅读 · 0 评论 -
快速求解幂运算-巧用二进制的方法
1. 我们需要求解x ^ n 问题,那么可以把n转化为二进制来进行求解例如求解2 ^ 10 那么10转化为二进制数字为1010 对应的位上分别为 8 4 2 12 ^ 10 可以转化为 2 ^ 8 * 2 ^ 22. 具体的代码如下:import java.util.Scanner;public class Main{ public static void main(Stri...原创 2018-09-25 21:48:28 · 2205 阅读 · 0 评论 -
斐波那契与矩阵幂运算
1. 假设f(1) = 1, f(2) = 1,那么矩阵[ f(1) , f(2) ]乘以矩阵{{0,1},{1,1}} = [1 , 2]= [f (2) ,f (3)]矩阵[ f(2) , f(3) ]乘以矩阵{{0,1},{1,1}} = [2, 3]= [f (3) ,f (4)], 所以由数学归纳法可以知道[ f(1) , f(2) ] * ( {{0,1},{1,1}} ...原创 2018-09-26 17:54:58 · 672 阅读 · 0 评论