六十、备战蓝桥杯 - Java算法 (基础练习二,2024年最新java面试视频讲解

	Scanner input = new Scanner(System.in);



	int num = input.nextInt();

	int remainder = 0;

	int number[] = new int[num + 1];

	for (int i = 3; i <= num; i++) {

		number[0] = 0;

		number[1] = 1;

		number[2] = 1;

		number[i] = number[i - 1] + number[i - 2];

		remainder = number[i] % 10007;

	}

	System.out.println(remainder);

}

}




![](https://img-blog.csdnimg.cn/9e750a6fe517412283292e7d9fbefae4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5omY6ams5pavLemFt-a2mw==,size_20,color_FFFFFF,t_70,g_se,x_16)



### 题目六



**圆的面积**



> 给定圆的半径r,求圆的面积。

> 

> 输入包含一个整数r,表示圆的半径。

> 

> 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。

> 

> 说明:在本题中,输入是一个整数,但是输出是一个实数。

> 

> 对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须**严格的**输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。

> 

> 实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。

> 

> 提示:本题对精度要求较高,请注意π的值应该取较精确的值。你可以使用常量来表示π,比如PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1.0)\*4。



import java.util.Scanner;

public class Main {

public static void main(String[] args) {



	Scanner input = new Scanner(System.in);



	int r = input.nextInt();

	double area = Math.PI*r*r*10000000;



	System.out.println((double)Math.round(area)/10000000);

	

	

}

}




![](https://img-blog.csdnimg.cn/99b0ba2226314671aa234663ac73b252.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5omY6ams5pavLemFt-a2mw==,size_20,color_FFFFFF,t_70,g_se,x_16)



### 题目七



**序列求和**



> 求1+2+3+...+n的值。

> 

> 输入包括一个整数n。

> 

> 输出一行,包括一个整数,表示1+2+3+...+n的值。

> 

> 说明:有一些试题会给出多组样例输入输出以帮助你更好的做题。

> 

> 一般在提交之前所有这些样例都需要测试通过才行,但这不代表这几组样例数据都正确了你的程序就是完全正确的,潜在的错误可能仍然导致你的得分较低。

> 

> 说明:请注意这里的数据规模。

> 

> 本题直接的想法是直接使用一个循环来累加,然而,当数据规模很大时,这种“暴力”的方法往往会导致超时。此时你需要想想其他方法。你可以试一试,如果使用1000000000作为你的程序的输入,你的程序是不是能在规定的上面规定的时限内运行出来。

> 

> 本题另一个要值得注意的地方是答案的大小不在你的语言默认的整型(int)范围内,如果使用整型来保存结果,会导致结果错误。

> 

> 如果你使用C++或C语言而且准备使用printf输出结果,则你的格式字符串应该写成%I64d以输出long long类型的整数。



import java.util.Scanner;

public class Main {

public static void main(String[] args) {



	Scanner input = new Scanner(System.in);



	int math = input.nextInt();

	long sum = 0;

	for (long i = 0; i <= math; i++) {

		sum += i;

	}

	System.out.println(sum);

}

}




![](https://img-blog.csdnimg.cn/0d761e23ce804cfba7b7f0c15abb0045.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5omY6ams5pavLemFt-a2mw==,size_20,color_FFFFFF,t_70,g_se,x_16)



VIP题目

-----



### 题目八



**阶乘计算**



> 输入一个正整数_n_,输出_n_!的值。  

> 其中_n_!=1\*2\*3\*…\*_n_。

> 

> 算法描述:_n_!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组_A_来表示一个大整数_a_,_A_\[0\]表示_a_的个位,_A_\[1\]表示_a_的十位,依次类推。  

> 将_a_乘以一个整数_k_变为将数组_A_的每一个元素都乘以_k_,请注意处理相应的进位。  

> 首先将_a_设为1,然后乘2,乘3,当乘到_n_时,即得到了_n_!的值。

> 

> 输入包含一个正整数_n_,_n_<=1000。

> 

> 输出_n_!的准确值。



import java.math.BigInteger;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {



	Scanner input = new Scanner(System.in);



	int number = input.nextInt();

	BigInteger bg = new BigInteger("1");



	for (int i = 1; i <= number; i++) {



		String n = String.valueOf(i);



		bg = (new BigInteger(n)).multiply(bg);

	}

	System.out.println(bg);

}

}




![](https://img-blog.csdnimg.cn/db0d2007e2c54be497af989834e0df5f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5omY6ams5pavLemFt-a2mw==,size_20,color_FFFFFF,t_70,g_se,x_16)



### 题目九



**高精度加法**



> 输入两个整数_a_和_b_,输出这两个整数的和。_a_和_b_都不超过100位。

> 

> 由于_a_和_b_都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。  

>   定义一个数组_A_,_A_\[0\]用于存储_a_的个位,_A_\[1\]用于存储_a_的十位,依此类推。同样可以用一个数组_B_来存储_b_。  

>   计算_c_ = _a_ + _b_的时候,首先将_A_\[0\]与_B_\[0\]相加,如果有进位产生,则把进位(即和的十位数)存入_r_,把和的个位数存入_C_\[0\],即_C_\[0\]等于(_A_\[0\]+_B_\[0\])%10。然后计算_A_\[1\]与_B_\[1\]相加,这时还应将低位进上来的值_r_也加起来,即_C_\[1\]应该是_A_\[1\]、_B_\[1\]和_r_三个数的和.如果又有进位产生,则仍可将新的进位存入到_r_中,和的个位存到_C_\[1\]中。依此类推,即可求出_C_的所有位。  

>   最后将_C_输出即可。

> 

> 输入包括两行,第一行为一个非负整数_a_,第二行为一个非负整数_b_。两个整数都不超过100位,两数的最高位都不是0。

> 

> 输出一行,表示_a_ + _b_的值。



import java.math.BigInteger;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

	Scanner input = new Scanner(System.in);

	String a = input.next();

	String b = input.next();

	int[] arr = new int[100];

	int[] brr = new int[100];

	int[] crr = new int[101];

	int r = 0;

	int count = 0;

	for (int i = a.length() - 1; i >= 0; i--) {

		arr[count++] = Integer.parseInt(a.substring(i, i + 1));

	}

	count = 0;

	for (int i = b.length() - 1; i >= 0; i--) {

		brr[count++] = Integer.parseInt(b.substring(i, i + 1));

	}

	for (int i = 0; i < 100; i++) {

		if ((crr[i] = (arr[i] + brr[i]) % 10 + r) == 10) {

			crr[i] = 0;

			r = 1;

			continue;

		}

		crr[i] = (arr[i] + brr[i]) % 10 + r;

		if (arr[i] + brr[i] > 10) {

			r = 1;

		} else {

			r = 0;

		}

	}

	int x = valid(crr);

	for (int i = x; i >= 0; i--) {

		System.out.print(crr[i]);

	}

}



public static int valid(int crr[]) {

	int tmp = 0;

	for (int i = 100; i >= 0; i--) {

		if (crr[i] != 0) {

			return i;

		}

	}

	return 100;

}

}




![](https://img-blog.csdnimg.cn/8798117179834487a4a7fa97085abefe.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5omY6ams5pavLemFt-a2mw==,size_20,color_FFFFFF,t_70,g_se,x_16)



### 题目十



**Huffuman树**



> Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。  

>   给出一列数{_pi_}={_p_0, _p_1, …, _pn_\-1},用这列数构造Huffman树的过程如下:  

>   1. 找到{_pi_}中最小的两个数,设为_pa_和_pb_,将_pa_和_pb_从{_pi_}中删除掉,然后将它们的和加入到{_pi_}中。这个过程的费用记为_pa_ + _pb_。  

>   2. 重复步骤1,直到{_pi_}中只剩下一个数。  

>   在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。  

>   本题任务:对于给定的一个数列,现在请你求出用该数列构造Huffman树的总费用。  

>   

>   例如,对于数列{_pi_}={5, 3, 8, 2, 9},Huffman树的构造过程如下:  

>   1. 找到{5, 3, 8, 2, 9}中最小的两个数,分别是2和3,从{_pi_}中删除它们并将和5加入,得到{5, 8, 9, 5},费用为5。  

>   2. 找到{5, 8, 9, 5}中最小的两个数,分别是5和5,从{_pi_}中删除它们并将和10加入,得到{8, 9, 10},费用为10。  

>   3. 找到{8, 9, 10}中最小的两个数,分别是8和9,从{_pi_}中删除它们并将和17加入,得到{10, 17},费用为17。  

>   4. 找到{10, 17}中最小的两个数,分别是10和17,从{_pi_}中删除它们并将和27加入,得到{27},费用为27。  

>   5. 现在,数列中只剩下一个数27,构造过程结束,总费用为5+10+17+27=59。

> 

> 输入的第一行包含一个正整数_n_(_n_<=100)。  

> 接下来是_n_个正整数,表示_p_0, _p_1, …, _pn_\-1,每个数不超过1000。

> 

> 输出用这些数构造Huffman树的总费用。



import java.util.*;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {



	Scanner input = new Scanner(System.in);

	int n = input.nextInt();

	List<Integer> list = new ArrayList<Integer>();

	for (int i = 0; i < n; i++) {

		int a = input.nextInt();

		list.add(a);

	}



	boolean flag = true;

	int sum = 0;

	while (flag) {

		if (list.size() < 2) {

			System.out.println(sum);

			flag = false;

		} else {

			int cc[] = new int[list.size()];

			for (int i = 0; i < cc.length; i++) {

				cc[i] = list.get(i);

			}

			Arrays.sort(cc);

			int b = cc[0];

			int c = cc[1];

			list.remove(Integer.valueOf(b));

			list.remove(Integer.valueOf(c));

			int d = b + c;

			sum += d;

			list.add(d);



		}

	}

}

}





**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/5e5025979e88b9f1c57f481aa147551b.jpeg)
![img](https://img-blog.csdnimg.cn/img_convert/51d511c11e7adcb0a7d8cfd407e49d95.png)
![img](https://img-blog.csdnimg.cn/img_convert/36a32fde90fefd28e89377c366fe6b45.png)
![img](https://img-blog.csdnimg.cn/img_convert/4b4f7c19e7974000b3153c6f6fadefc6.png)
![img](https://img-blog.csdnimg.cn/img_convert/30848db6b30d45a67d09b1ec4ed24d1f.png)
![img](https://img-blog.csdnimg.cn/img_convert/af1e40fbc1659e865c79e640ce062b46.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)**
![img](https://img-blog.csdnimg.cn/img_convert/2931ad4a41fde9cabf19fa576f9c9547.jpeg)





# 独家面经总结,超级精彩

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

![image](https://img-blog.csdnimg.cn/img_convert/aeffb637a89816e45c4f5db810e26682.webp?x-oss-process=image/format,png)

![image](https://img-blog.csdnimg.cn/img_convert/60f782f8c80f71da190bf1d1251f4760.webp?x-oss-process=image/format,png)

![image](https://img-blog.csdnimg.cn/img_convert/6544977faaa717afd5dc117de64c4d12.webp?x-oss-process=image/format,png)

![image](https://img-blog.csdnimg.cn/img_convert/6e11e1e38825e38a426c4a04be60a2e8.webp?x-oss-process=image/format,png)

# Java面试准备

准确的说这里又分为两部分:

1.  Java刷题
2.  算法刷题

Java刷题:此份文档详细记录了千道面试题与详解;

![image](https://img-blog.csdnimg.cn/img_convert/a16fe83e942aea5a4278f14a5d303df1.webp?x-oss-process=image/format,png)

![image](https://img-blog.csdnimg.cn/img_convert/79c05f4fc7a331c25fb8e0bf029e9187.webp?x-oss-process=image/format,png)



**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/b9d1a837b9115ead9dfa75a375e86a91.jpeg)


[外链图片转存中...(img-9uMpJLKl-1712706957167)]





# 独家面经总结,超级精彩

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

[外链图片转存中...(img-gY6j8oWY-1712706957167)]

[外链图片转存中...(img-SIgvDLgq-1712706957167)]

[外链图片转存中...(img-ebAls4ZL-1712706957168)]

[外链图片转存中...(img-cW6OiFnj-1712706957168)]

# Java面试准备

准确的说这里又分为两部分:

1.  Java刷题
2.  算法刷题

Java刷题:此份文档详细记录了千道面试题与详解;

[外链图片转存中...(img-kydn630o-1712706957168)]

[外链图片转存中...(img-skU42xAp-1712706957168)]



**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-GCfdfSlq-1712706957169)]

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值