自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 Map的分类和常见情况

Java 为数据结构中的映射定义了一个接口 java.util.Map 它有4个实现类,分别为HashMap,HashTable,LinkedHashMap 和 TreeMap。 Map其中主要用来存储键值对,根据键得到值,因此不允许键重复(重复了就会覆盖),但允许值重复。 HashMap是最常用的Map,它根据键的 HashCode 值存储数据,具有很快的访问速度,遍历时,取得数据的顺序是完...

2019-08-31 15:52:09 286

原创 mysql的事物隔离

当MySQL表被多个线程或者客户端开启各自事务操作数据库中的数据时,MySQL提供了一种机制,可以让不同的事务在操作数据时,具有隔离性。从而保证数据的一致性。如果无隔离性会出现什么问题呢?让我们一起来看看。脏读:已知有两个事务A和B, A读取了已经被B更新但还没有被提交的数据,之后,B回滚事务,A读取的数据就是脏数据。例子:银行卡原有1000元,A向银行卡转账1000元,B读到2000元,A发...

2019-08-29 14:54:28 145

原创 数字1出现的次数:暴力解决法。

给定一个数字N,求出1到N之间 1出现的次数。什么个位的数字,十位的数字,百位的数字,统统不管,只要直观,只要暴力。将1到N都统统变成一个字符串,然后遍历字符串,判断每一个字符是否等于字符1最后统计出来即可。public class Solution { public int NumberOf1Between1AndN_Solution(int n) { ...

2019-08-27 21:27:00 235

原创 堆排序

堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是 通过堆来进行选择数据。需要注意的是排升序要建大堆,排降序建小堆。时间复杂度:O(N*logN) 3. 空间复杂度:O(1) 稳定性:不稳定我们选择升序,其步骤如下:1 创建一个堆 H[0……n-1];2.把堆首(最大值)和堆尾互换;3.把堆的尺寸缩小 1,并调用 shift_down...

2019-08-26 09:57:08 111

原创 最晚起床问题

牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要X分钟到达教室,上课时间为当天的A时B分,请问他最晚可以什么时间起床。每个输入包含一个测试用例。每个测试用例的第一行包含一个正整数,表示闹钟的数量N(N<=100)。接下来的N行每行包含两个整数,表示这个闹钟响起的时间为Hi(0<=A<24)时Mi(0<=B<6...

2019-08-25 14:40:47 274

原创 直接插入排序

直接插入排序(straight insertion sort)的做法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入排序是由两层嵌套循环组成的。外层循环标识并决...

2019-08-25 09:33:27 314

原创 简单选择排序

在简单选择排序过程中,所需移动记录的次数比较少。最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。最坏情况下,即待排序记录初始状态是按第一条记录最小,之后的记录从小到大顺序排列,则需要移动记录的次数最多为3(n-1)。简单选择排序过程中需要进行的比较次数与初始状态下待排序的记录序列的排列情况无关。当i=1时,需进行n-1次比较;当i=2时,需进行n-2次比较;依次类推,共需要...

2019-08-24 10:59:58 293

原创 冒泡排序

1.冒泡排序:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。原理如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素...

2019-08-23 12:19:54 139

原创 牛牛找方向

牛牛去犇犇老师家补课,出门的时候面向北方,但是现在他迷路了。虽然他手里有一张地图,但是他需要知道自己面向哪个方向,请你帮帮他。每个输入包含一个测试用例。每个测试用例的第一行包含一个正整数,表示转方向的次数N(N<=1000)。接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。我们可以定义一个数组按照开始面向北的方向,存储 N,E,S,W4个方向。然后读...

2019-08-21 11:56:47 181

原创 给定一个链表,输出倒数第N个节点。

找到倒数一K个节点,可以定义2个节点,2个节点相差K-1个节点,即当前面的节点的下一个节点的next等于空时,此时当前节点已到链表最有一个节点,则后面的节点则就是要寻找的倒数第K个节点。 public ListNode FindKthToTail(ListNode head,int k) { if (head == null || k <= 0) { ...

2019-08-21 11:13:56 1346

原创 层序遍历二叉树的每一个节点

层序遍历即将二叉树的每一层分别遍历,直到叶子节点全部被遍历完。我们可以借助队列先进先出的思想,将每一个节点放入队列中,抛出打印,再判断是否存在左右节点,并将左右节点也放入队列中,抛出打印,直到最有一个节点不存在左子数也不存在右子树,说明遍历完毕。代码如下void binartLevel(TreeNode root){ Queue<TreeNode> queue...

2019-08-21 09:39:13 333

原创 非递归遍历二叉树

非递归我们就要借用栈先进后出的特性解决这个问题。当传入节点不为空时,我们可以把当前节点放入栈中,并打印,之后让其左孩子进入栈,直到将所有左孩子放入栈中并打印,然后再将其栈顶元素抛出,让后将当前节点变为抛出节点的右孩子,放入栈中打印。这样就实现了非递归的二叉树的前序遍历。void binaryTreePrev(TreeNode root){ Stack<TreeNode&g...

2019-08-20 19:24:09 74

原创 二叉树的遍历问题

根据访问节点的位置顺序,二叉树有4中遍历方式:前序遍历:访问根结点的操作发生在遍历其左右子树之前。中序遍历:访问根结点的操作发生在遍历其左右子树之中(间)。后续遍历:访问根结点的操作发生在遍历其左右子树之后层序遍历:将二叉树的每一层分别遍历,直到叶子节点全部被遍历完。我们可以使用递归遍历二叉树。前序遍历 if (root == null){ re...

2019-08-20 19:11:49 296

原创 给定2个数,要求不使用四则原则,求出它的结果。

其实不使用加减乘除,一般都是使用位运算,但是8好意思,我不太会用这个,只好另想方法了。所以才有这个奇葩的方法。既然要相加2个数,可以不用直接操作2个数,+不行 ,++用可以把。因此通过自增的方法实现这个功能。代码如下,别打我脸。这个太low了 哈哈。 public int Add(int num1,int num2) { if(num1>0){ ...

2019-08-19 15:30:34 78

原创 二叉树大小堆的创建

什么是堆?如果一个集合N=(n0,n1,n2,n3…n-1),把他的元素按照完全二叉树的顺序排列,如果其父节点,总是大于其子节点,则成它为大堆,反之则为小堆。节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。堆的性质:堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。给定一个数组 int []array = {1,2,3,4,5,6,7,8,9,...

2019-08-19 14:44:13 230

原创 Java:给定一个数组,寻找里面前K小的元素

可以使用TreeSet将其排序并去除掉重复元素,之后再用ArrayList保存其所需要的前K的元素。 public ArrayList<Integer> GetLeastNumbers_Solution(int[] input, int k) { ArrayList<Integer> list1 = new ArrayList<>(); ...

2019-08-16 15:13:42 519

原创 Java:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

可以先建两个数组,然后遍历原来数组中的每一个元素,如果是奇数在放入奇数组中,将所有奇数都加载完后,再遍历一边将偶数放入偶数组。最后分别将2个数组的元素赋给原数组。在这里插入代码片 public void sortArray(int [] array) {int []o = new int[array.length]; int []j = new int[array.len...

2019-08-16 12:29:28 485

原创 Java:青蛙跳台阶问题

1.假设当有n个台阶时假设有f(n)种走法。2.青蛙最后一步要么跨1个台阶要么跨2个台阶。3.当最后一步跨1个台阶时即之前有n-1个台阶,根据1的假设即n-1个台阶有f(n-1)种走法。4. 当最后一步跨2个台阶时即之前有n-2个台阶,根据1的假设即n-2个台阶有f(n-2 )种走法。5.显然n个台阶的走法等于前两种情况的走法之和即f(n)=f(n-1)+f(n-2)。6.找出递推公式后...

2019-08-16 11:31:09 142

原创 Java:编写一个方法,在二维数组中查找一个数。

一个二维数组按照行按照从小到大排序,列也是如此,给定义一个数在其中查找是否存在 。因为是有序的,我们可以选区右上角或者左上角的数进行比较。publicboolean Find(int target, int[][] array) { int row = 0; int col = array[0].length-1; while (row<=...

2019-08-15 20:37:01 698

原创 Java:给定一个double类型的浮点数base和int类型的整数exponent,求base的exponent次方

采取递归的方法,结果这个问题public double Power(double base, int ex){ double res =0; if(ex>=0){ res=way(base,ex); }else { res =way(base,-ex); res = 1...

2019-08-15 19:20:36 145

原创 Java类

在Java中内部类主要分为:成员内部类:成员内部类中不能存在任何static的变量和方法成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类静态内部类 :关键字static可以修饰成员变量、方法、代码块,其实它还可以修饰内部类,使用static修饰的内部类我们称之为静 态内部类。静态内部类与非静态内部类之间存在一个最大的区别,我们知道非静态内部类在编译完成之后会隐含地 保...

2019-08-15 18:57:41 72

原创 Java:字母出现的次数

输入一串字母,统计A-Z出现的次数。import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); int cou...

2019-08-10 19:50:59 521

原创 Java:简单错误记录问题

开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;3、 输入的文件可能带路径,记录文件名称不能带路径。输入描述:一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。输出描述:将所有的记录统...

2019-08-09 20:34:32 444

原创 Java:数字组合问题

给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = ne...

2019-08-08 19:46:56 375

原创 Java:中奖问题

今年公司年会的奖品特别给力,但获奖的规矩却很奇葩:首先,所有人员都将一张写有自己名字的字条放入抽奖箱中;待所有字条加入完毕,每人从箱中取一个字条;如果抽到的字条上写的就是自己的名字,那么“恭喜你,中奖了!”现在告诉你参加晚会的人数,请你计算有多少概率会出现无人获奖?因为是不放回问题,所以结果共有N的阶乘,无人中奖的方式则可以参考错排算法问题,错排的结果/总结果就是无人中奖的概率。...

2019-08-08 19:41:03 582

原创 Java:候选人投票

实现一个投票功能,第一行输入候选人人数,第二行输入候选人,第三行输入投票人数,第四行输入投票,并记录无用票。import java.util.HashMap;import java.util.Map;import java.util.Scanner;import java.util.Set;public class Main { public static void main(...

2019-08-06 19:25:54 1732

原创 JAVA:连续子数组中的最大值

import java.util.Scanner;public class Main { public static int add(int []arr){ if(arr.length ==0 || arr==null){ return 0; } int sum =arr[0]; int m...

2019-08-05 16:36:06 340

原创 JAVA:在第一个字符串中删除第二个字符串

package day40.在第一个字符串中删除第二个字符串;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str1 = sca...

2019-08-05 16:35:08 1595

原创 Java:大整数排序问题

package day30.大整数排序;import java.math.BigInteger;import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc=new Scanner(S...

2019-08-05 16:33:17 186

原创 Java:判断一个数是否是守型数

守型数,即一个数平方后,它的后几位数等同于原来的数,如25的平方625,它就是一个守型数。可以先把数字变为字符串,再截取进行比较。public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while (scann...

2019-08-01 16:19:08 290

原创 Java:绩点问题

北京大学对本科生的成绩施行平均学分绩点制(GPA)。既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。公式如下: 实际成绩 绩点 90——100 4.0 85——89 3.7 82——84 3.3 78——81 3.0 75——77 2.7 72——74 2.3 68——71 2.0 64——67 1.5 60——63 1.0 60以下 0 1.一门课程的学分绩点=该课绩点*该课...

2019-07-31 18:04:19 830

原创 JAVA:数字解密问题

1、对输入的字符串进行加解密,并输出。2加密方法为:当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;其他字符不做变化。3、解密方法为加密的逆过程。接口描述:实现接口,每个接口实现1个基本操作:void Encrypt (char aucPassword[],...

2019-07-30 12:15:16 464

原创 Java:骆驼命名法:将变量名从第二个单词开始首字母大写

我们可以先把每个字符都分别用标识符分隔出来,如果这个字符前面是标识符,则这个字符大写。列如 hello_java_hello ,可以用"_"将这3个单词拿出来,然后让其首字母大写。 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (s...

2019-07-28 19:20:51 1320

原创 Java:判断是一年的第几天

属于一个日期 如2019 7 27 看这一天是今天的第几天。如果是7月,则我们需要把前6个月的天数加起来,再加上输入日期的天数就可得的答案,需要注意的是2月都可能是28天也有可能是29天,这取决于是否是闰年。import java.util.Scanner;public class Main { public static void main(String[] args) {...

2019-07-27 17:36:43 2537

原创 Java的一大特色多线程

什么是线程?即一个程序同时执行多个任务,每个任务都是一个线程。与进程相比较,线程更轻量,创建,销毁一个线程比启动一个新进程开销要小的多,但没有进程就没有线程,进程一终止,其中的线程也就没有了。而多线程与多进程的区别在于每个进程都有自己的一整套变量,而线程则共享数据,使线程之间通信更有效,更方便。线程状态即5种,分别为创建 —>就绪 —>运行 —>终止。其中在运行状态时发程导致...

2019-07-26 18:52:11 77

原创 Java:空格替换

请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。我们可以选择用StringBuilder来拼接出一个字符串再返回,当碰见空格时则拼接上%20。 public static String replaceSpace(String str,int len){ ...

2019-07-25 18:04:47 427

原创 Java:寻找子节点祖先问题

有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点a,b。请设计一个算法,求出a和b点的最近公共祖先的编号。首先我们可以知道这是一个满二叉树,并且根节点为1。所以问题就很简单化了:满二叉树的节点与父节点的关系为:节点值/2=父节点值。 因此: 当a!=b的时候就一直循环,将大的那个除以2,再比较是否相同,直到相同为止。这样就容易写出来了。impo...

2019-07-25 17:58:59 491

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除