
算法-数学
xushiyu1996818
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode-060-排列序列
常见的做法是:代入一个具体的数值,认真调试。把候选数放在一个 有序列表 里,从左到右根据「剩下的数的阶乘数」确定每一位填谁,公式 k / (后面几位的阶乘数) 的值 恰好等于候选数组的下标;如果 k 小于等于这一个分支将要产生的叶子结点数,那说明所求的全排列一定在这一个分支将要产生的叶子结点里,需要递归求解。一句话题解:以下给出了两种方法,思路其实是一样的:通过 计算剩余数字个数的阶乘数,一位一位选出第 k 个排列的数位。由于这里考虑的是下标,第 k 个数,下标为 k - 1,一开始的时候,k--。原创 2023-07-02 19:40:32 · 633 阅读 · 0 评论 -
leetcode-043-字符串相乘
如果num 1和num 2都不是0,则可以通过模拟「竖式乘法」的方法计算乘积。从右往左遍历乘数,将乘数的每一位与被乘数相乘得到对应的结果,再将每次得到的结果累加。这道题中,被乘数是num 1,乘数是num 2。num1[i] x num2[j] 的结果为 tmp(位数为两位,"0x""0x", "xy""xy" 的形式),其第一位位于 res[i+j],第二位位于 res[i+j+1]。该算法是通过两数相乘时,乘数某位与被乘数某位相乘,与产生结果的位置的规律来完成。需要注意的是,num 2。原创 2023-05-14 11:37:17 · 113 阅读 · 0 评论 -
leetcode-012-整数转罗马数字
这个思路相对比较简单,因为题目中说输入在 1 ~3999 的范围内,所以我们把 1 到 9,10 到 90,100 到 900,1000 到 3000 对应的罗马数字都表示出来,最后对于任何输入,我们要做的就是把找到的罗马数字组合起来即可。比如输入是 2359,我们找到 2000,300,50,9 对应的罗马数字为 MM,CCC,L,IX,组合后得到结果为 MMCCCLIX。然后根据算法,将1,5,10对应的char拼接成对应的字符串。1994,这样,每位分别处理,1000,900,90,4。原创 2023-04-23 22:56:20 · 114 阅读 · 0 评论 -
leetcode-009-回文数
这里需要注意的一个点就是由于回文数的位数可奇可偶,所以当它的长度是偶数时,它对折过来应该是相等的;当它的长度是奇数时,那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整)。如果是奇数的话,最中间的数字就在revertNum 的最低位上,将它除以 10 以后应该和 x 相等。将最低的数字加到取出数的末尾:revertNum = revertNum * 10 + y。每次进行取余操作 ( %10),取出最低的数字:y = x % 10。通过取整和取余操作获取整数中对应的数字进行比较。原创 2023-04-20 21:19:01 · 404 阅读 · 0 评论 -
剑指offer-47-不用加减乘除做加法-java
题目及测试package sword047;/* 写一个函数,求两个整数之和,要求在函数体内不得使用+,-,x,÷四则运算符号。*/import java.util.List;public class main { public static void main(String[] args) { int [] testTable = {1,8,21}; int [] testTable2 = {4,9,32}; for(int i=0;i<testTable.原创 2021-01-16 12:48:08 · 136 阅读 · 0 评论 -
剑指offer-46-求1+2+...+n-java
题目及测试package sword046;/* 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。*/public class main { public static void main(String[] args) { int[] testTable = {123,-2561,1340,-2147483648}; for (int i=0;i<testTable.length;原创 2021-01-16 12:47:46 · 182 阅读 · 0 评论 -
剑指offer-34-丑数-java
题目及测试package sword034;/* 把只包含因子2、3和5的数称作丑数(Ugly Number)。 * 例如6、8都是丑数,但14不是,因为它包含因子7。 * 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。*/public class main { public static void main(String[] args) { int[] testTable = {123,-2561,1340,-2147483648}; for (int i原创 2020-12-26 11:01:02 · 127 阅读 · 0 评论 -
剑指offer-32-从1到n整数中1出现的次数-java
题目及测试package sword032;/* 输入一个整数n,求从1到n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11,和12,1一共出现了5次。*/public class main { public static void main(String[] args) { int[] testTable = {12,-2561,1340,-2147483648}; for (int i=0;i<testTable.lengt原创 2020-12-19 09:40:35 · 148 阅读 · 0 评论 -
剑指offer-12-打印1到最大的n位数-java
题目及测试package sword012;/* 题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。*/public class main { public static void main(String[] args) { int [] testTable = {0,1,2}; for (int ito : testTable) { test(ito); } } private static原创 2020-11-11 21:14:25 · 169 阅读 · 0 评论 -
剑指offer-11-数值的整数次方-java
题目及测试package sword011;/* 问题描述:实现函数double power(double base,int exponent),求base的exponent次方。不能使用库函数,同时不需要考虑大数问题。*/public class main { public static void main(String[] args) { double [] testTable = {1,2,2.1}; int [] testTable2 = {4,9,15}; for原创 2020-11-09 10:13:37 · 159 阅读 · 0 评论 -
leetcode-406-根据身高重建队列-java
题目及测试package pid406;/*Queue Reconstruction by Height假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7原创 2020-07-08 15:35:48 · 374 阅读 · 0 评论 -
leetcode-149-直线上最多的点数-java
题目及测试package pid149;/*直线上最多的点数给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。示例 1:输入: [[1,1],[2,2],[3,3]]输出: 3解释:^|| o| o| o +------------->0 1 2 3 4示例 2:输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]输出: 4解释:^|| o| o原创 2020-07-07 16:09:18 · 305 阅读 · 0 评论 -
leetcode-179-最大数-java
题目及测试package pid179;/*最大数给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。*/public class main { public static void main(String[] args) { int[][] testTable = {{99原创 2020-07-03 14:22:08 · 311 阅读 · 0 评论 -
排列组合总结
目录简介P 的由来C 的由来组合数的公式直观解释组合公式Ⅰ组合公式Ⅱ组合公式Ⅲ组合公式Ⅳ组合公式Ⅴ参考了 https://www.zhihu.com/question/26094736简介排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。 排列组合与古典概率论关系密切。P 的由来..原创 2020-06-22 16:22:47 · 2968 阅读 · 0 评论 -
10进制转换为2进制和16进制
public class Main4{ public static void main(String[] args) { Main4 solution = new Main4(); // "0000000000001111,000F" System.out.println(solution.changeFormatNumber("15")); // "1111111111111111,FFFF" System.out.println(solution.changeForm.原创 2020-06-18 21:45:38 · 1765 阅读 · 0 评论 -
简单计算器实现
目录中缀表达式后缀表达式中缀表达式转换为后缀表达式后缀表达式的计算中缀转后缀代码原中缀表达式字符串转换为list结构代码后缀表达式求值代码中缀表达式先说一下中缀表达式,平时我们使用的运算表达式就是中缀表达式,例如1+3*2,中缀表达式的特点就是:二元运算符总是置于与之相关的两个运算对象之间人读起来比较好理解,但是计算机处理起来就很麻烦,运算顺序往往因表达式的...原创 2020-04-02 15:32:11 · 978 阅读 · 0 评论 -
leetcode-227-基本计算器 II-java
题目及测试package pid227;/* 基本计算器 II实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。示例 1:输入: "3+2*2"输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5说明...原创 2019-11-28 13:51:51 · 249 阅读 · 0 评论 -
leetcode-169-求众数 (majority element)-java
题目及测试package pid169;/*求众数给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2*/public class main { ...原创 2019-01-31 11:25:11 · 272 阅读 · 0 评论 -
leetcode-150- 逆波兰表达式求值(evaluate reverse polish notation)-java
题目及测试package pid150;/*逆波兰表达式求值根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+"...原创 2019-01-30 09:57:39 · 376 阅读 · 0 评论 -
leetcode-数学总结
leetcode-412 -Fizz Buzz-(fizz bzz)-java解法1(成功,6ms,较慢)不用对数进行mod,直接设置mod参数,mod3,mod5,每次+1,到3,5,为0其余剩余别人的做法是直接对i%3的做法还有i变为string类型除了string.valueof(i) 还有i+&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;am原创 2018-10-15 09:44:14 · 787 阅读 · 1 评论 -
leetcode-204-计数质数(count primes)-java
题目及用例package pid204;/* 计数质数统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。*/import java.util.List;public class main { public static void main(String[] a...原创 2018-10-15 11:12:22 · 628 阅读 · 0 评论 -
leetcode-326-3的幂(power of three)-java
题目及测试package pid326;/* 3的幂给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false进阶:你能不使用循环或者递归来完成本题吗?*/import java.uti...原创 2018-10-16 11:34:38 · 433 阅读 · 0 评论 -
leetcode-13-罗马数字转整数(roman to integer)-java
题目及测试package pid013;/*罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1...原创 2018-10-17 11:38:00 · 204 阅读 · 0 评论 -
leetcode-268-缺失数字(missing number)-java
题目及测试package pid268;/* 缺失数字给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?*/pu...原创 2018-10-25 10:29:11 · 293 阅读 · 0 评论 -
leetcode-118-杨辉三角(pascl triangle)-java
题目及测试package pid118;/*帕斯卡三角形给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]*/import java.util.List...原创 2018-10-23 13:39:13 · 385 阅读 · 0 评论 -
leetcode-202-快乐数(happy number)-java
题目及测试package pid202;/* 快乐数编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例: 输入: 19输出: true解释: 1^2 + 9^2 = 828^2 ...原创 2019-01-18 11:30:44 · 639 阅读 · 0 评论 -
leetcode-69-x 的平方根(sqrt(t))-java
题目及测试package pid069;/*x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将...原创 2019-01-24 10:47:17 · 486 阅读 · 0 评论 -
leetcode-29-两数相除(divide two integers)-java
题目及测试package pid029;/* 两数相除给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, di...原创 2019-01-25 14:35:03 · 431 阅读 · 0 评论 -
leetcode-172-阶乘后的零(factorial trailing zeroes)-java
题目及测试package pid172;/*阶乘后的零给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。*/public class main {...原创 2019-01-21 12:34:52 · 309 阅读 · 0 评论 -
leetcode-171-Excel表列序号(excel sheet column number)-java
题目及测试package pid171;/* Excel表列序号给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1...原创 2019-01-22 13:40:44 · 284 阅读 · 0 评论 -
leetcode-621-任务调度器(task scheduler)-java
题目及测试package pid621;/* Task Scheduler给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命状态。然而,两个相同种类的任务之间必须有长度为 n 的冷却时间...原创 2019-02-01 14:08:05 · 669 阅读 · 0 评论 -
leetcode-166-分数到小数(fraction to recurring decimal)-java
题目及测试package pid166;/* 分数到小数给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。示例 1:输入: numerator = 1, denominator = 2输出: "0.5"示例 2:输入: numerator = 2, deno...原创 2019-01-28 13:54:36 · 490 阅读 · 0 评论 -
leetcode-50-Pow(x, n)-java
题目及测试package pid050;import java.util.List;/* Pow(x, n)实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.250...原创 2019-01-23 13:54:08 · 373 阅读 · 0 评论 -
leetcode-371-两整数之和(sum of two integers)-java
题目及测试package pid371;/*两整数之和不使用运算符 + 和 - ,计算两整数 a 、b 之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1*/public class main { public static void main(...原创 2019-01-29 13:30:43 · 208 阅读 · 0 评论 -
leetcode-412 -Fizz Buzz-(fizz bzz)-java
题目及测试package pid412;/* Fizz Buzz写一个程序,输出从 1 到 n 数字的字符串表示。1. 如果 n 是3的倍数,输出“Fizz”;2. 如果 n 是5的倍数,输出“Buzz”;3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2", "Fizz", ...原创 2018-10-15 09:40:18 · 256 阅读 · 0 评论