2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~

前言

昨晚逛了逛GitHub,无意中看到一位P8大佬的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙伴没有看到。

关于算法刷题的困惑和疑问也经常听朋友们提及,在面试和不少业务中经常问到,但算法就必须依靠牢固的基础和刷题量。算法根基不扎实,不仅难过面试,对于代码性能的提升、编程语言的驾驭也会比别人弱很多。

全部的面试题内容和参考答案都整理成文档了(在文末)
因此,现在算法基础不牢固的同学,都很难通过大厂的面试。但是只靠刷题去提升算法能力,进度太慢,而且还容易抓不住重点。有了这个笔记的总结,对校招和社招的算法刷题帮助之大不言而喻,果断收藏安利之。

Java算法

1、二分查找

又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。

public static int biSearch(int []array,int a){
 int lo=0;
 int hi=array.length-1;
 int mid;
 while(lo<=hi){
 mid=(lo+hi)/2;//中间位置
 if(array[mid]==a){
 return mid+1;
 }else if(array[mid]

2、冒泡排序算法

(1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。

(2)这样对数组的第 0 个数据到 N-1 个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1 个位置。

(3)N=N-1,如果 N 不为 0 就重复前面二步,否则排序完成。

 public static void bubbleSort1(int [] a, int n){
 int i, j;
for(i=0; i a[j]){//前面的数字大于后面的数字就交换
 //交换 a[j-1]和 a[j]
 int temp;
 temp = a[j-1];
 a[j-1] = a[j];
 a[j]=temp;
 }
 }
 } }

3、插入排序算法

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第1张图片

public void sort(int arr[])
{
 for(int i =1; i=0&&insertVal

4、快速排序算法

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第2张图片

5、希尔排序算法

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第3张图片

6、归并排序算法

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第4张图片

7、桶排序算法

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第5张图片

8、基数排序算法

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第6张图片

9、回溯算法

回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。

10、剪枝算法

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第7张图片

11、最小生成树算法

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第8张图片

加密算法

1、AES

高级加密标准为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第9张图片
2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第10张图片
g)]

2、RSA

RSA 加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法…

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第11张图片

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第12张图片

3、CRC

循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误…

4、MD5

MD5 常常作为文件的签名出现,我们在下载文件的时候,常常会看到文件页面上附带一个扩展名为.MD5 的文本或者一行字符,这行字符就是就是把整个文件当作原数据通过 MD5 计算后的值,我们下载文件后,可以用检查文件 MD5 信息的软件对下载到的文件在进行一次计算。两次结果…

力扣算法

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第13张图片

1、反转链表=

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第14张图片

2、统计N以内的素数

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第15张图片

3、寻找数组的中心索引

数组中某一个下标,左右两边的元素之后相等,该下标即为中心索引

**思路:**先统计出整个数组的总和,然后从第一个元素开始叠加,总和递减当前元素,叠加递增当前元素,知道两个值相等

public static int pivotIndex(int[] nums) {
	int sum1 = Arrays.stream(nums).sum();
	int sum2 = 0;
	for (int i = 0; i

4、删除排序数组中的重复项

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第16张图片

public int removeDuplicates(int[] nums) {
	if (nums.length == 0) return 0;
	int i = 0;
	for (int j = 1; j < nums.length; j++) {
		if (nums[j] != nums[i]) {
			i++;
			nums[i] = nums[j];
		}
	}
	return i + 1;
}

5、x的平方根

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第17张图片

6、三个数的最大乘积

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第18张图片

7、两数之和

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第19张图片

8、斐波那契数列

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第20张图片

9、环形链表

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第21张图片

10、排列硬币

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第22张图片

11、省份数量

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第23张图片

12、预测赢家

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第24张图片

13、香槟塔

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第25张图片

14、井字游戏

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第26张图片

15、打家劫舍

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第27张图片

16、优势洗牌

2022年度GitHub最火的力扣算法刷题宝典,手把手教你如何刷力扣~_第28张图片

总结

很多算法题其实本身并不难,难的是细节逻辑方面,如果这些细节方面没有笔记或者有人讲解的话,自己可能要好几天都不一定想的明白,一但被别人点破,只要几分钟可能就能想明白,所以说收集学习笔记和结伴学习都是非常不错学习方式,可以很高的提升自己的学习效率,完整的算法笔记以为为大家安利好了。


添加 博主 获取更多资料

你可能感兴趣的:(Java面试,Java核心技术,程序人生,java,开发语言,面试,算法)