07 2020 档案
摘要:将四个变量的值保存在配置文件中 配置文件要放在src目录下 public class JDBCUtil { //成员变量私有 //定义数据库的连接地址 private static String url; //定义用户名 private static String userName; //定义密码
阅读全文
摘要:如果每使用一次JDBC就要重复`注册驱动`,`获得连接`的操作,实现起来就会很繁琐,而且冗余的代码太多,于是可以将重复的部分封装到一个工具类,每次使用工具类就可以了。 public class JDBCUtil { //成员变量私有 //定义数据库的连接地址 private static Stri
阅读全文
摘要:JDBC开发步骤: 1. 注册驱动 2. 获得连接 3. 获得执行sql语句的对象 4. 执行sql语句,并返回结果 5. 处理结果 6. 释放资源 public class DemoDay1 { @Test public void addOne() throws ClassNotFoundExce
阅读全文
摘要:import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.TreeMap; public class HashAndTree { public static void main
阅读全文
摘要:题目描述: 输入一个链表,输出该链表中倒数第k个结点。 题目链接:https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&&tqId=11167&rp=1&ru=/ta/coding-interviews&
阅读全文
摘要:题目描述:输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 题目链接:https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993?tpId=13&&tqId=11185&rp=1&
阅读全文
摘要:定义节点: class DoubleNode{ int value; String name; DoubleNode next; DoubleNode pre; public DoubleNode(int value, String name) { this.value = value; this.
阅读全文
摘要:定义节点: class Node{ int value; Node next; public Node(int value ){ this.value = value; } @Override public String toString() { return "Node{" + "value="
阅读全文
摘要:反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解题思路:双指针迭代。(如图head节点当成链表的第一个节点就好了,画的时候想的还不够清楚) 实现代码: //双指针迭代法 public ListNode reverseList
阅读全文
摘要:打印链表的有效节点:就是链表的长度呗,从头结点开始遍历,下一个节点不是null就计数器加1 public int getLength(Node head){ Node temp = head; int length = 0; if (head.next == null){ System.out.pr
阅读全文
摘要:首先是leetcode原题题目: 给出一个区间的集合,请合并所有重叠的区间。 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠,将它们合并为 [1,6]. 示例 2: 输入:
阅读全文
摘要:基数排序的使用条件要保证数据是十进制的数(否则需要自己改写基数排序) 图解过程如下: 代码挺不好理解的,实在理解不了用队列来写(我觉得我用不了多久就忘了) 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);
阅读全文
摘要:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 题目地址:https://leetcode-cn.com/problems/er-wei-shu-zu-z
阅读全文
摘要:题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。 输入描述: 输入多行,先输入要排序的人的个数,然后输入排序方法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]; }
阅读全文
摘要:基本思路: 保证0~0有序,然后0~1有序,0~2有序,0~i有序的过程 因为0~0肯定是有序的 所以外循环从1开始 比较条件: 前面还有没有数据 && 前面索引的值 > 后面索引的值 时间复杂度最差情况是bigO(n2) 最好情况是bigO(n) public class InsertionSor
阅读全文
摘要:基本思路就是索引(0,1)比较,(1,2)比较,(2,3)比较依次进行比较,最后索引最大处的值必然为最大的值,外层循环每进行一轮比较就可以减少一次 比如第一轮是(0~n-1) 第二轮就是 (0~n-2) 时间复杂度也是bigO(n2) public class BubbleSort { public
阅读全文
摘要:public class SelectionSort { public static void selectionSort(int[] arr) { //边界判断 if (arr == null || arr.length < 2) { return; } //1.控制范围 i~n-1 for (i
阅读全文