先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
正文
🎈C: 数组分割
🎈D:矩形总面积
🎈E:蜗牛
🎈A:阶乘求和
本题总分:5分
🎯问题描述:
令 S = 1! + 2! + 3! + … + 202320232023! , 求 S 的末尾 9 位数字。 提示:答案首位不为 0 。
package pojo.LanQiao.day1;
import java.math.BigInteger;
import java.util.Scanner;
//令 S = 1! + 2! + 3! + … + 202320232023! ,
// 求 S 的末尾 9 位数字。
// 提示:答案首位不为 0 。
public class 阶乘求和01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
long n = scanner.nextLong();
long sum = 0;
for (int i = 1; i <= n; i++) {
sum += fun(i);
sum %= 1e9;
System.out.println(sum);
}
}
public static long fun(long n) {
if (n == 0 || n == 1) {
return 1;
} else {
return (long) (fun(n - 1) * n % 1e9);
}
}
}
🎃题解分析: 官方的骗术 当加到40多的阶乘时,这个阶乘和后面的9位数就不会发生改变了。
🗯️计算时模1e9(10的9次方)可以缩小倍数,算出结果。
🎈B: 幸运数字
本题总分:5分
🎯问题描述:
哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整 数。例如 126 126126 是十进制下的一个哈沙德数,因为 ( 126 ) 10 m o d ( 1 + 2 + 6 ) = 0 (126){10} mod (1+2+6) = 0(126) 10mod(1+2+6)=0;126 126126 也是八进制下的哈沙德数,因为 ( 126 ) 10 = ( 176 ) 8 , ( 126 ) 10 m o d ( 1 + 7 + 6 ) = 0 (126){10} = (176)8,(126){10} mod (1 + 7 + 6) = 0(126) 10 =(176) 8 ,(126) 10 mod(1+7+6)=0; 同时 126 126126 也是 16 1616 进制下的哈沙德数,因为 ( 126 ) 10 = ( 7 e ) 16 , ( 126 ) 10 m o d ( 7 + e ) = 0 (126){10} = (7e){16},(126)_{10} mod (7 + e) = 0(126) 10 =(7e) 16 ,(126) 10mod(7+e)=0。小蓝认为,如果一个整数在二进制、八进制、十进制、十六进制下均为 哈沙德数,那么这个数字就是幸运数字,第 1 至第 10 个幸运数字的十进制表示 为:1 , 2 , 4 , 6 , 8 , 40 , 48 , 72 , 120 , 126… 1 , 2 , 4 , 6 , 8 , 40 , 48 , 72 , 120 , 126 . . .1,2,4,6,8,40,48,72,120,126… 。现在他想知道第 2023 个幸运数 字是多少?你只需要告诉小蓝这个整数的十进制表示即可。
package pojo.LanQiao.day1;
//哈沙德数(126)10mod(1+2+6)=0;126 126126 也是八进制下的哈沙德数、
//第 2023 个幸运数 字是多少?
public class 幸运数字02 {
public static void main(String[] args) {
int n = 0;
for (int i = 1; i < 100000000; i++) {
if (fun(i)) {
n++;
if (n == 2023) {
System.out.println(i);
break;
}
}
}
}
public static boolean fun(int n) {
int sum = 0;
int x = n;
while (x != 0) {
sum += x % 10;
x /= 10;
}
if (n % sum != 0) {
return false;
}
sum = 0;
x = n;
while (x != 0) {
sum += x % 2;
x /= 2;
}
if (n % sum != 0) {
return false;
}
sum = 0;
x = n;
while (x != 0) {
sum += x % 8;
x /= 8;
}
if (n % sum != 0) {
return false;
}
sum = 0;
x = n;
while (x != 0) {
sum += x % 16;
x /= 16;
}
if (n % sum != 0) {
return false;
}
return true;
}
}
215040
🎃题解分析: 这题就是考察大家的进制转换,数据量也不大。直接看代码吧!
🎈C: 数组分割
本题总分: 10 分
🎯问题描述:
小蓝有一个长度为 N 的数组 A = [ A 0 , A 1 , . . . , A N − 1 ] 。现在小蓝想要从 A 对应的数组下标所构成的集合 I = { 0 , 1 , 2 , . . . , N − 1 } 中找出一个子集 R 1 ,那么 R 1在 I 中的补集为 R 2 。记 S 1 = ∑ r ∈ R 1 A r , S 2 = ∑ r ∈ R 2 A r,我们要求 S 1 和 S 2 均为 偶数,请问在这种情况下共有多少种不同的 R 1。当 R1 或 R 2 为空集时我们将 S 1 或 S 2 视为 0。
算法刷题
大厂面试还是很注重算法题的,尤其是字节跳动,算法是问的比较多的,关于算法,推荐《LeetCode》和《算法的乐趣》,这两本我也有电子版,字节跳动、阿里、美团等大厂面试题(含答案+解析)、学习笔记、Xmind思维导图均可以分享给大家学习。
写在最后
最后,对所以做Java的朋友提几点建议,也是我的个人心得:
-
疯狂编程
-
学习效果可视化
-
写博客
-
阅读优秀代码
-
心态调整
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-xavVtFiQ-1713438704201)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!