基础
nanfeiliulanghan
为it梦想而奋斗!
展开
-
算法-分解正整数的公约数
1.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。2.思路:遍历2~n/2,如果求余为0,赋值下一轮值等于上一轮除以当前数,如2可以被90整除,下一轮传入值为90/2=453.简单代码:/** * @Author: hs * @Description: 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 * @Date: 2021-02-02 11:54 */public class ZhengZhengShuFenjieZhiY原创 2021-02-02 12:26:19 · 188 阅读 · 0 评论 -
算法-题目:根据输入值求偶数奇数和
1.题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n、2.解决思路:通过递归来实现3.简单代码如下:/** * @Author: hs * @Description: 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n * @Date: 2021-02-02 10:42 */public class OushuJis原创 2021-02-02 11:08:09 · 278 阅读 · 0 评论 -
算法-猴子分桃
1.问题:五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆;第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?2.解決思路:可以痛過递归来处理,f(n-1)=4(f(n)-1)/5;中间如果存在(num-1)%5!=0;说明桃子数不符合,如果从5-0,最后能进行到猴子数达到0,说明这个桃子数num符合3.简单实例:/**原创 2021-02-02 09:50:50 · 395 阅读 · 0 评论 -
算法-打印出N内的所有质数
1.质数:只有自身和1两个正约数,如3只有1和3,所以是3是质数,4有1,2,4,所以不是质数2.简单例子如下:/** * @Author: hs * @Description: 查找出质数 * @Date: 2021-02-01 11:41 */public class FindZhishu { //一个数只有1和它本身的正约数 public static boolean isZhishu(int n){ if(n<=3){原创 2021-02-01 14:30:00 · 255 阅读 · 0 评论 -
算法-九九乘阶打印和计算N的乘阶结果
1.九九乘阶打印例子//九九乘阶打印 public static void print() { for (int i = 1; i <= 9; i++) { for(int j = 1;j<=i;j++){ System.out.print(j + "*" + i + "=" + i * j + " "); if(i==j){ System原创 2021-02-01 11:31:24 · 295 阅读 · 0 评论 -
算法-计算兔子总数问题
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....2.思路:可见当n==1或者n==2时,兔子数都是1,当n>2时,兔子数都是等于前两个月的相加,这个正好可以用递归来实现3.java简单例子:/** * @Author: hs * @Description: 兔子生子 * @Date: 2021-0...原创 2021-02-01 11:28:09 · 461 阅读 · 0 评论 -
算法-二分查找
1.前提条件:数组必须是一个有序数组2.思路:1)取中间值array[middle]与目标值target做比较,如果相等返回当前下标;2)如果中间值array[middle]小于目标target值,说明目标值在中间值的右侧,设置新一轮开始下标start=middle,相当于下一轮从middle~end之间查询;3)如果中间值array[middle]大于目标target值,说明目标值在中间值的左侧,设置新一轮结束下标end=middle,相当于下一轮从start~middle之间查询;4原创 2021-01-30 11:33:04 · 63 阅读 · 0 评论 -
算法-快速排序
1.思路:在数组中找一个值作为中间值key,然后从数组右边开始向左边寻找小于key值放到key的左边,同时从数组的左边向右边寻找大于key值放到key的右边;2.具体步骤:(1)定义全局变量i,赋值等于start (2)定义全局变量j,赋值等于end (3)定义key值,等于array[i] (4)后面会交换array[i]和array[j]值,同时i会不断增加,j会不断减小,所以只要i<j,都会循环处理 (5)从下标为j开始,向下走,直到找到比key值小的值的下标(目标是找到比key值.原创 2021-01-29 13:19:06 · 75 阅读 · 0 评论 -
算法-冒泡排序
1 数组:{5,7,6,2,4}2.冒泡排序思路,从下表为0开始遍历,每次查找最大那个值往后移(时间O(n^2))。1)从5开始,与后一位作比较,如果比后一位大,就交换两个元素的位置,否则不交换,如5没有比7大,不需要交换,结果->{5,7,6,2,4}1)7比6大,需要交换,结果->{5,6,7,2,4}2)7比2大,需要交换,结果->{5,6,2,7,4}3)7比4大,需要交换,结果->{5,6,2,4,7} ->这一轮走完,找到了最大...原创 2021-01-27 14:21:06 · 65 阅读 · 0 评论 -
BiMap使用
可以实现key和value转换,我们用Map平常一般都是通过key来获取value值,如果场景希望通过value来获取key值,BiMap就适合,它是双向集合,但当value有重复值时,会抛出异常,除非用forcePut()方法强制覆盖public void reverseMapValue(){BiMap<Integer,String>biMap=HashBiMap.cr...原创 2019-06-04 12:15:01 · 1517 阅读 · 0 评论