- 博客(12)
- 收藏
- 关注
原创 StringTable面试题
public static void main(String[] args){ String s1 = "a"; String s2 = "b"; String s3 = "a" + "b";//编译期优化为”ab“,常量池没有,入池 String s4 = s1 + s2;//new String(”ab“)堆中的对象 String s5 = "ab";//常量池中已有 String s6 = s4.intern();//池中已有,直接返回常量池中的 //问 System.out.pr
2021-07-19 12:41:59 184
原创 解决hash冲突的三个方法
通过构造性能良好的哈希函数,可以减少冲突,但一般不可能完全避免冲突,因此解决冲突是哈希法的另一个关键问题。创建哈希表和查找哈希表都会遇到冲突,两种情况下解决冲突的方法应该一致。下面以创建哈希表为例,说明解决冲突的方法。常用的解决冲突方法有以下四种:开放定址法这种方法也称再散列法,其基本思想是:当关键字key的哈希地址p=H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突的哈希地址pi ,将相应元素存入其中。这种方法有
2021-05-26 18:39:25 399
原创 Java中==和equals()的区别
== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)。equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:情况 1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。情况 2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来比较两个对象的内容是否相等;若它们的内容相等,则返回 true
2021-05-26 18:27:08 107
原创 排序算法详细总结
冒泡排序1、冒泡排序1.1算法思想1.2代码2、选择排序2.1算法思想2.2代码3、插入排序3.1算法思想3.2代码3.3补充4、快速排序4.1算法思想4.2代码4.3补充5、归并排序5.1算法思想5.2代码5.3补充6、堆排序6.1算法思想6.2代码6.3补充1、冒泡排序1.1算法思想冒泡排序算法每次比较相邻的两个数,如果左边的数小于右边的数,那么交换这两个元素,否则不交换,经过第一趟交换后,最大的元素肯定在最右边的位置上,然后对前n−1个元素重复上述操作。1.2代码 public stati.
2021-04-23 13:34:39 391
原创 Maven项目jar包报错has broken classes path:
Maven项目jar包报错has broken classes path:
2021-04-13 19:44:07 1127 1
原创 逆序对的数量
题目描述给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤1000001≤n≤100000输入样例:62 3 4 5 6 1输出样例:5#include <iostream>us
2021-01-27 19:16:35 116
原创 第k个数
题目描述给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列的第k小的数是多少。输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在1~109109范围内),表示整数数列。输出格式输出一个整数,表示数列的第k小数。数据范围1≤n≤1000001≤n≤1000001≤k≤n1≤k≤n输入样例:5 32 4 1 5 3输出样例:3#include <iostream>using namespace std;const in
2021-01-27 18:24:40 118
原创 一维前缀和与二维前缀和(子矩阵的和)
一维前缀和输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l, r。对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。输出格式共m行,每行输出一个询问的结果。数据范围1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素的值≤1000输入样例:5 32 1 3 6 41 21 32 4输出样例:3610#
2021-01-27 17:06:53 98
原创 二分查找——数的范围
题目描述给定一个按照升序排列的长度为n的整数数组,以及 q 个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回“-1 -1”。输入格式第一行包含整数n和q,表示数组长度和询问个数。第二行包含n个整数(均在1~1000010000范围内),表示完整数组。接下来q行,每行包含一个整数k,表示一个询问元素。输出格式共q行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回“-1 -1”。数据范围1≤n
2021-01-25 20:47:51 204
原创 归并排序
题目描述给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤100000输入样例:53 1 2 4 5输出样例:1 2 3 4 5归并排序步骤:1、确定分界点下表mid = (l+r)/22、递归排序左边和右边3、
2021-01-25 19:55:22 80
原创 快速排序
算法思想-分治代码模版下面展示一些 内联代码片。#include <iostream>using namespace std;const int N = 1000010;int q[N];void quick_sort(int q[], int l, int r){ if (l >= r) return;//检测左右边界是否正常 int i = l - 1, j = r + 1, x = q[l + r >> 1]; //由于使
2021-01-25 19:07:22 94
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人