![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
陈全蛋
一位在读软件工程的学生
展开
-
力扣——划分为k个相等的子集
一、题目:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。示例 1:输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4输出: True说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。提示:1 <= k <= len(nums) <= 160 < nums[i] < 10000二、思路:首先是题意:做每道算法题,原创 2020-10-13 20:37:30 · 327 阅读 · 0 评论 -
力扣——最长同值路径
一、题目:给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例 1:输入:5/ \4 5/ \ \1 1 5输出:2示例 2:输入:1/ \4 5/ \ \4 4 5输出:2注意: 给定的二叉树不超过10000个结点。 树的高度不超过1000。二、思路:这道题的题意就是找出二叉树,最长同值路径。分为两种情况(1原创 2020-10-12 21:51:00 · 166 阅读 · 0 评论 -
力扣——二叉搜索树的范围和
题目:给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。示例 1:输入:root = [10,5,15,3,7,null,18], L = 7, R = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10输出:23提示:树中的结点数量最多为 10000 个。最终的答案保证小于 2^31。思路:首先是题意:这道题的意思就是,找出在给定左右节点范原创 2020-10-03 10:17:23 · 127 阅读 · 0 评论 -
力扣——第N个泰波那契数列的值
题目:泰波那契序列 Tn 定义如下: T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。示例 1:输入:n = 4输出:4解释:T_3 = 0 + 1 + 1 = 2T_4 = 1 + 1 + 2 = 4示例 2:输入:n = 25输出:1389537提示:0 <= n <=原创 2020-09-27 17:42:03 · 187 阅读 · 0 评论 -
不定方程扩展欧几里得
扩展欧几里得定理扩展欧几里得定理(Extended Euclidean algorithm, EXGCD),常用于求ax+by=gcd(a,b) 的一组可行解。将 不断代入递归求解直至 (最大公约数,下同)为 0 递归 x=1,y=0 回去求解。public static int f(int a,int b,int[] xy){ if(b == 0){ xy[0] = 1; xy[1] = 0; retur原创 2020-09-06 10:51:41 · 108 阅读 · 0 评论 -
求n个最小公倍数
题目如果两个数很大,怎样求最大公约数,最小公倍数?如果是n个数呢?比如1000个数的最小公倍数输入2 4 63 2 5 7输出1270思路首先最大公约数可以用辗转相除法,定义为lcm(m,n),然后再定义一个方法gcd(m,n)求最大公约数,用公式法 :最小公倍数 = m * n / lcm(m,n),使用一个数组nums来装输入的数据,大小n由输入决定int nums[] = new int[n];,然后在使用一个while循环,来输入装进数组nums的数据。最后定义一个int原创 2020-08-17 19:42:11 · 448 阅读 · 0 评论 -
天平称重,进制转换解法
题目:用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果只有5个砝码,重量分别是1,3,9,27,81则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。本题目要求编程实现:对用户给定的重量,给出砝码组合方案。例如:用户输入:5程序输出:9-3-1用户输入:19程序输出:27-9+1要求程序输出的组合总是大数在前小数在后。可以假设用户的输入的数字符合范围1~121。思路:观察输出,都是3的多少次方,所以我们可以把输入的值,转换成3进制的原创 2020-08-17 13:22:14 · 311 阅读 · 0 评论 -
蓝桥——组合算法
在数学中,我们学习了,排列组合,排列是有序的,组合是无顺序的。在做算法题时,我们也会遇到这种。so,今天来理下,怎么写组合。举个例子,桌子上有3个球A,B,C,我们取2个,无放回的取,有几种情况?算一下:也就是C(3,2)=3。需要解决的问题那么先理下思路,我们需要解决哪几个问题:要怎么表示3个数是否被取了呢,我想,弄一个int数组把他们的初值置为0,就像int a = {0,0,0},如果他被取了,就把它置为1,三个int分别代表ABC。然后就是从箱子里取球,是组合是吧。最后,满足条件,输原创 2020-08-12 21:29:25 · 133 阅读 · 0 评论 -
详讲全排列算法,及解决数字搭积木问题
如果你是做这道题不会,那么你可以看这道题的解题思路,如果你是不太理解全排列算法,那么你可以通过这个题来理解。原创 2020-08-10 20:19:02 · 764 阅读 · 0 评论 -
看不懂辗转相除法求最小公约数?以身相许那种哦!
给你打个比喻吧:你英雄救美了,美女想要报答你,你想要1000块感谢费,但是美女却想要以身相许????,懂了吧,同样都是报答,只是用了不一样的方式,辗转相除法也是这样,你两个数的最大公约数不容易求,我就用另外两个简单的数来解决。废话不多说,看定理。定理:辗转相除 可以求最大公约数,顾名思义,反复的除,最终得到两数的最大公约数。首先我们来分析下定理:定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。最大公约数(Greatest Common Divisor)缩写为GCD。原创 2020-08-07 09:42:19 · 195 阅读 · 0 评论 -
java验证输入是否为三阶幻方
问题描述:小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。三阶幻方又被称作九宫格,在小学奥数里有一句非常有名的口诀:“二四为肩,六八为足,左三右七,戴九履一,五居其中”,通过这样的一句口诀就能够非常完美的构造出一个九宫格来。 4 9 2 3 5 7 8 1 6有意思的是,所有的三阶幻方,都可以通过这样 一个九宫格进行若干镜像和旋转操作之后得到 。现在小明准备将一个原创 2020-08-06 01:07:21 · 1513 阅读 · 0 评论 -
使用Luhn算法实现信用卡号验证
使用Luhn算法实现信用卡号验证问题描述:2:信用卡号的验证 【信用卡号的验证】 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么 担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过 Luhn 算法来验 证通过。 该校验的过程: 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5 等等)相加。2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以 2(如果乘积为两位 数,则将其减去 9),再求和。3、将奇数位总和加上偶数位总和,结果应该可以被 10 整除。例如,卡号原创 2020-08-06 01:04:11 · 746 阅读 · 0 评论