随笔分类 - Java学习
摘要:再向自定义注解添加元注解时,遇到一个错误 Annotations are not allowed here 排除写错和导入单元测试和Maven依赖的问题,百度一下并没有找到解决的办法,于是Google搜索一下,在SO上找到解决办法 意思就是说,在注解后面添加了“;”号导致的,一看自己的代码确实是这
阅读全文
摘要:基数排序的使用条件要保证数据是十进制的数(否则需要自己改写基数排序) 图解过程如下: 代码挺不好理解的,实在理解不了用队列来写(我觉得我用不了多久就忘了) public static void radixSort(int[] arr) { if (arr == null || arr.length
阅读全文
摘要:桶排序的思想就是把数据放入到多个桶里面,在对桶里面的数据进行排序。 之前学过的排序(冒泡、选择、快排、堆排、归并)都是基于比较之间的排序,而桶排序不是基于比较的排序。 比如计数排序,顾名思义就是统计一个数字出现的次数,用一个桶来记录每一个数字出现的次数,最后再将桶由指定的顺序将数字取出。 计数排序时
阅读全文
摘要:随机在数组范围中找一个“基准值”,并将其与数组最右元素交换作为基准。 与此“基准值”进行比较就可以得到三个区域:小于,等于,大于。递归此过程就可以将数组排好序。 时间复杂度:由于随机选取一个数,那么每个数的概率就是 1/N ,拿到的这个数有可能构成最好情况,有可能构成不好不坏的情况,有可能构成最差情
阅读全文
摘要:给定一个数组ar,和一个数num,请把小于num的数放在数组的左边,等于num的数放数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)额外空间复杂度为O(1),不能开辟另一个数组。 过程图解: public class NetherLandsFlag { pub
阅读全文
摘要:堆结构的概念:堆就是一个数组,它可以以完全二叉树的形式表现出来。 大根堆:完全二叉树中每棵子树的最大值都在顶部就是大根堆 如何实现大根堆?堆操作之heapInsert heapInsert方法来实现将数组“上浮”调整成大根堆。 public static void heapInsert(int[]
阅读全文
摘要:题目描述: 小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:1、将a_i放入b序列的末尾2、逆置b序列小易需要你计算输出操作n次之后的b序列。 解题过程: 代码: import java.util.Scanner; public class Main
阅读全文
摘要:题目链接:https://www.nowcoder.com/practice/94a4d381a68b47b7a8bed86f2975db46?tpId=13&&tqId=11204&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/qu
阅读全文
摘要:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 算法思路: 将数组分成子数组,使左右数组均有序、如果左数组中一元素大于右数组某一元素,说明左数组其余元素都大于右数组的当前元素,此时产生左数组剩下元素数量的逆序对。 当左数组
阅读全文
摘要:在一个数组中,每一个数左边的数比当前数小的累加起来,叫做这个数组的小和 举例: [1,3,4,2,5]1左边比1小的数:没有3左边比3小的数:14左边比4小的数:1,32左边比2小的数:15左边比5小的数:1,3,4,2所以小和为1+1+3+1+1+3+4+2=16 解题思路:分治思想、归并 将一个
阅读全文
摘要:import java.util.Scanner; /* 输入整型数组和排序标识,对其元素按照升序或降序进行排序 int iSortFlag:排序标识:0表示按升序,1表示按降序 */ public class Homework_1 { static int flag; public static
阅读全文
摘要:public class MergeSort { public static void mergeSort(int[] arr) { //排序算法边界判断 if (arr == null || arr.length < 2) { return; } process(arr, 0, arr.lengt
阅读全文
摘要:递归写法: public class Homework3 { public int Fibonacci(int n) { if (n == 0) { return 0; } if (n == 1) { return 1; } return Fibonacci(n-1)+Fibonacci(n-2);
阅读全文
摘要:题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。 输入描述: 输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开。 输出描述: 按照指定方式输出名字和成绩,名字和成绩之间以
阅读全文
摘要:对数器: 相当与自己为自己的算法提供了一共测试,类似于OJ的判断,但是样本容量比OJ提供的用例更多。ACM比赛的选手都会使用对数器来进行测试,因为ACM比赛提交一次如果失败是会罚时的。 所以对数器就是自己为自己的算法进行测试。怎么使用呢? 对数器的使用: 判断自己写的算法是否正确,可以编写一个绝对正
阅读全文
摘要:public class BSAwesome { public static int getLessIndex(int[] arr){ if (arr==null || arr.length ==0){ return -1; } if (arr[0] < arr[1]){ return 0; } i
阅读全文
摘要:public class BSNearLeft { public static int nearestIndex(int[] arr, int value) { int L = 0; int R = arr.length - 1; int mid = 0; int index = -1; while
阅读全文
摘要:public class BSExist { public static boolean exist(int[] arr, int target) { if (arr.length == 0 || arr == null) { return false; } int L = 0; int R = a
阅读全文
摘要:public static void printOddTimesNum2(int[] arr) { int eor = 0; for (int c : arr) { eor ^= c; } //eor = a^b //eor != 0; //eor二进制位必然有一位等于1 int rightOne
阅读全文
摘要:public class EvenTimesOddNum1 { public static void printOddTimesNum1(int[] arr){ int eor = 0; for (int i = 0;i<arr.length;i++){ eor = eor ^ arr[i]; }
阅读全文