Java
一些学习Java的分享
zz070
这个作者很懒,什么都没留下…
展开
-
之字形顺序打印二叉树
【题目描述】请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。【思路】(1)利用栈和队列将二叉树按照之字形依次放到ArrayList中(2)详细步骤①创建一个ArrayList用于存放二叉树每一层元素②如果二叉树为空,直接返回一个空的ArrayList③创建一个栈,用于对④ ⑤⑥【代码】import java.util.ArrayList;import java.util.LinkedL原创 2020-10-08 21:16:53 · 164 阅读 · 0 评论 -
练习(十一)
1、 下面哪个标识符是合法的("Hello$World”)java的标识符由数字,字母,下划线,美元符组成,数字不可以作为开头,少用美元符2、 以下描述正确的是(B PreparedStatement是CallableStatement的父接口)A CallableStatement是PreparedStatement的父接口B PreparedStatement是CallableStatement的父接口C CallableStatement是Statement的父接口D PreparedS原创 2020-09-04 17:15:28 · 474 阅读 · 0 评论 -
练习(七)
1、Math.round(11.5) 等于:(12)参数的小数点后第一位<5,运算结果为参数整数部分。参数的小数点后第一位>5,运算结果为参数整数部分绝对值+1,符号(即正负)不变。参数的小数点后第一位=5,正数运算结果为整数部分+1,负数运算结果为整数部分。2、关于以下程序代码的说明正确的(程序通过编译,输出结果为:x=102)class HasStatic{ private static int x = 100; public static void main(String原创 2020-09-03 21:36:30 · 91 阅读 · 0 评论 -
练习(十)
10、Fibonacci数列 | 时间限制:1秒 | 内存限制:32768K【题目描述】Fibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少原创 2020-08-16 22:02:42 · 205 阅读 · 0 评论 -
练习(八)
【题目描述】有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。【输入描述】每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。【输出描述】一行输出最后一个被删原创 2020-08-16 00:08:30 · 194 阅读 · 0 评论 -
练习(六)
10、计算糖果 | 时间限制:1秒 | 内存限制:32768K【题目描述】A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。【输入描述】输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用原创 2020-08-15 22:39:47 · 180 阅读 · 0 评论 -
练习(五)(Java)
1、 下面的程序 编译运行后,在屏幕上显示的结果是(A 0)public class test { public static void main(String args[]) { int x,y; x=5>>2; y=x>>>2; System.out.println(y); }} A 0 B 2 C 5 D 80 几种移位运算符(运行结果都是按16进制打印的): (1)左移 <<: 左侧位不要了, 右侧补原创 2020-08-14 19:16:17 · 176 阅读 · 0 评论 -
练习(四)(Java)
1、下面属于黑盒测试方法的是(**C 边界值分析 **)A 语句覆盖 B 逻辑覆盖 C 边界值分析 D 路径覆盖黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法2、下列不能用作存储容量单位的是(C MIPS )A Byte B GB C MIPS D KBMIPS 即 Million Instructio原创 2020-07-16 15:33:56 · 218 阅读 · 0 评论 -
练习(三)(Java)
1、以下代码运行输出的是(C 编译出错)public class Person{ private String name = "Person"; int age=0;} public class Child extends Person{ public String grade; public static void main(String[] args){ Person p = new Child(); System.out.println(p.name); }}A 输出:P原创 2020-06-23 21:15:39 · 310 阅读 · 0 评论 -
练习(二)(Java)
1、下面代码将输出什么内容:(B false)public class SystemUtil{ public static boolean isAdmin(String userId){ return userId.toLowerCase()=="admin"; } public static void main(String[] args){ System.out.println(isAdmin("Admin")); }}2、阅读如下代码。 请问,对语句行 test.hello(原创 2020-06-05 11:27:04 · 204 阅读 · 0 评论 -
练习(一)(Java)
一、选择题1、 执行如下程序,输出结果是(C 2 24 46 6)class Test{ private int data; int result = 0; public void m(){ result += 2; data += 2; System.out.print(result + " " + data); }} class ThreadExample extends Thread{ private Test mv; public ThreadExample(Tes原创 2020-06-03 21:39:11 · 320 阅读 · 0 评论 -
归并排序(Java)
目录1、原理2、实现3、性能分析1、原理(1)归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。(2)将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。(3)若将两个有序表合并成一个有序表,称为二路归并2、实现(1)手动实现(2)代码(3)运行结果3、性能分析(1)时间复杂度:O(n*log(n))(2)空间复杂度:O(n)(3)稳定性:稳定.原创 2020-05-15 19:00:07 · 136 阅读 · 0 评论 -
快速排序(Java)
目录1、原理2、实现3、性能指标1、原理(1)从待排序区间选择一个数,作为基准值;(2) Partition: 遍历整个待排序区间,将比基准值小的(可以包含相等的)放到基准值的左边,将比基准值大的(可以包含相等的)放到基准值的右边,不断递归,直至数据完全有序2、实现(1)手动实现(2)代码import java.util.Arrays;public class Quick { public static void quickSort(int[] array){ /原创 2020-05-14 22:55:50 · 198 阅读 · 0 评论 -
冒泡排序(Java)
目录1、原理2、实现3、性能分析1、原理2、实现(1)手动实现(2)代码(3)运行结果3、性能分析原创 2020-05-13 22:38:41 · 78 阅读 · 0 评论 -
堆排序(Java)
目录1、原理2、实现3、性能分析1、原理基本原理也是选择排序,只是不在使用遍历的方式查找无序区间的最大的数,而是通过堆来选择无序区间的最大的数。注意: 排升序要建大堆;排降序要建小堆2、实现(1)手动实现(2)代码(3)运行结果3、性能分析(1)时间复杂度:O(n*log(n))(2)空间复杂度:O(n)(3)稳定性:不稳定...原创 2020-05-13 21:53:50 · 103 阅读 · 0 评论 -
选择排序(Java)
目录1、原理2、实现3、性能指标1、原理每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的最后(或最前),直到全部待排序的数据元素排完2、实现(1)手动实现(2)代码public static void selectSort(int[] array){ //升序排序 //[0,array.length - bound)是未排序区域,[array.length - bound,array.length)是已排序区域 //以bound位置原创 2020-05-11 19:11:23 · 106 阅读 · 0 评论 -
希尔排序(Java)
目录1、原理2、实现3、性能分析1、原理(1)希尔排序法又称缩小增量法。(2)希尔排序法的基本思想是:先选定一个整数,将所有待排序元素分成若干个组,所有距离相同的元素分在同一组内,并对每一组内的元素进行排序。然后,重复上述分组和排序的工作。当到达组数为 1 时,所有记录在统一组内排好序。(3)希尔排序是对直接插入排序的优化。(4)当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,就整体而言,就可以达到优化的效果。2、实现(1)手动实现原创 2020-05-10 22:15:58 · 167 阅读 · 0 评论 -
插入排序(Java)
目录1、原理2、实现3、性能分析1、原理(1)通过bound将整个区间被划分为两个区间:[0,bound)为有序区间,[bound,size)为无序区间;(2)每次将无序区间的第一个元素取出,与有序区间的元素作对比,选择合适的位置插入2、实现(1)代码: public void insertSort(int[] array){ //升序排序 //一个元素的情况一定有序,bound从1考试 for(int bound = 1;bound<arr原创 2020-05-09 21:55:49 · 99 阅读 · 0 评论 -
牛客网练习题 - 下厨房(Java)
题目描述:牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。输入描述:每个输入包含 1 个测试用例;每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格;输入文件不超过 50 行,每一行不超过 50 个字符。输出描述:输出一行一个数字表示完成所有料理需要多少种不同的材料。示例...原创 2020-04-28 22:11:48 · 364 阅读 · 0 评论 -
牛客网练习题 - Fibonacci数列(Java)
题目描述:Fibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X...原创 2020-04-28 13:05:00 · 266 阅读 · 0 评论 -
LeetCode练习题 - 最小栈(Java)
题目描述:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。思路:创建两个栈A,B,A用于存放用于存放正常数据,B用于存放A中的最小值 1、入栈 ...原创 2020-04-26 22:35:26 · 183 阅读 · 0 评论 -
LeetCode练习题 -杨辉三角(Java)
题目描述:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行思路:1、杨辉三角的特点: (1)第一行是1; (2)第二行是1,1; (3)第 i 行的首尾全都是1; (4)第 i 行有 i 个元素; (5)第 i 行的第 j 列等于第(i-1)行的(j-1)列加上第(i-1)行的 j 列2、解题思路: (1)若只有一行,直接输出第一行; (...原创 2020-04-24 22:35:02 · 185 阅读 · 0 评论 -
List练习 - 扑克牌(Java)
描述:一副牌有4种花色,13种大小,52张牌面(不算大小王)代码:import java.util.ArrayList;import java.util.Collections;import java.util.List;class Card{ private String rank; //花色 private String suit; //花色 p...原创 2020-04-24 21:42:26 · 212 阅读 · 0 评论 -
牛客网练习题 - 二叉树遍历(Java)
题目描述:编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。输入描述: 输入包括1行字符串,长度不超过100 输出描述: 可能有多组测试数...原创 2020-04-20 23:00:03 · 658 阅读 · 0 评论 -
LeetCode练习 - 用栈实现队列(Java)
题目:用两个栈实现一个队列思路:思路: 栈的特点:先进后出;队列的特点:先进先出 创建两个栈A,B;A用于入队列,B用于出队列 1、入队 (1)若栈B不为空,先将B中的元素全部放到A中 (2)将要入队的元素放入A中 2、出队 (1)若队列为空,直接返回null;...原创 2020-04-17 14:56:28 · 132 阅读 · 0 评论 -
LeetCode练习题 - 用队列实现栈(Java)
题目:用两个队列实现栈思路:栈的特点:先进后出;队列的特点:先进先出创建两个队列A,B;1、入栈 直接在A中入栈即可2、出栈 (1)若栈为空,直接返回null; (2)队列A中的最后一个元素,即为栈顶元素; a.将A出队列转移到B b.将A中最后一个元素,出队列即可(记为ret) (3)交换AB队列方便下一步操作; (4)返回栈顶元素ret 3、取栈顶元素 ...原创 2020-04-17 14:52:50 · 137 阅读 · 0 评论 -
LeetCode练习题 - 有效的括号(Java)
题目描述:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。注意:1、有效字符串需满足: (1)左括号必须用相同类型的右括号闭合。 (2)左括号必须以正确的顺序闭合。2、空字符串可被认为是有效字符串。思路:1、先用一个map将括号类型存下来,key表示左括号,value表示有括号2、创建一个栈用于保存字符类型3、遍历字符串中的每个...原创 2020-04-16 23:28:08 · 331 阅读 · 0 评论 -
搜索二叉树(Java)
概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索树 基本操作1、查找树不为空的情况下:(1)key小于根节点的值,去左子树找;(2)key大于根节点的值,去右子树找;(3)相等,就找到了,返回该节点若都...原创 2020-04-16 20:29:07 · 138 阅读 · 0 评论 -
LeetCode练习题 -前K个高频单词(Java)
题目描述:给一非空的单词列表,返回前 k 个出现次数最多的单词。注意:返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。思路:用一个map保存所有单词,key表示单词,value表示该单词出现的次数;将统计的单词放到ArrayList中;对ArrayList进行排序;返回前k个单词代码:import java.util.*;pu...原创 2020-04-15 09:45:00 · 406 阅读 · 1 评论 -
LeetCode练习题 - 宝石与石头(Java)
题目描述:给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。注意:J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。思路:遍历字符串J,将J中所有宝石类型放到一个set中;遍历字符串S,用S的每个元素到set中查找,若找到即为宝石...原创 2020-04-14 22:28:10 · 197 阅读 · 0 评论 -
LeetCode练习题 -只出现一次的数字(Java)
题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素思路:方法一(按位异或):数组中只有一个数字出现了一次,其他数字都出现两次进行二进制异或运算,相同为0,不同为1,最后剩下的数字就是只出现一次的数字方法二(Map):创建一个Map来统计数组中元素的个数,Key表示元素,Value表示出现次数;遍历数组,完成统计;遍历...原创 2020-04-14 22:24:29 · 172 阅读 · 0 评论 -
LeetCode练习题 - 复制带有随机指针的链表(Java)
题目描述:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。思路:1、遍历原链表,将原链表插入到map中,key表示就链表的结点,value表示拷贝出来的新结点2、再次遍历链表,修改新链表中的next和random3、最后,新链表的头结点即可代码:import java.util.HashMap;import ...原创 2020-04-14 22:18:05 · 115 阅读 · 0 评论 -
牛客网练习题 - 旧键盘(Java)
题目描述:1、输入: 输入在2行中分别给出应该输入的文字、以及实际被输入的文字。 每段文字是不超过80个字符的串, 由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。2、输出: 按照发现顺序,在一行中输出坏掉的键。 其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。思路:1、循环读入字符串,第...原创 2020-04-14 21:50:07 · 161 阅读 · 0 评论 -
有关异常(Java)
异常的背景1、异常指的就是程序在 运行时 出现错误时通知调用者的一种机制2、程序发生异常的时候通知程序员两种方式:(1)LBYL: Look Before You Leap. 在操作之前就做充分的检查.(2)EAFP: It’s Easier to Ask Forgiveness than Permission. “事后获取原谅比事前获取许可更容易”. 也就是先操作, 遇到问题再处理3、...原创 2020-04-10 15:37:14 · 165 阅读 · 0 评论 -
二叉树的非递归遍历(Java)
二叉树的非递归遍历1、非递归先序遍历2、非递归中序遍历3、非递归后序遍历构建一棵二叉树构建二叉树,并写出,前序遍历,中序变异,后序遍历的结果代码运行结果:代码实现import java.util.Stack;public class Ergodic { //构建一棵二叉树 public static TreeNode build() { ...原创 2020-04-08 15:14:31 · 331 阅读 · 0 评论 -
堆(二)(Java)
优先级队列1、概念优先级队列应当提供两个操作:(1)返回最高优先级对象;(2)添加新的对象2、内部原理实现优先级队列的方式很多,但最常见的是用堆来构建3、操作 - 入队列过程(以大堆为例)(1)首先按尾插方式放入数组(2)比较其和其双亲的值的大小,如果双亲的值大,则满足堆的性质,插入结束(3)否则,交换其和双亲位置的值,重新进行 (2)(3)步骤(4)直到根结点4、操作 ...原创 2020-04-08 14:44:01 · 74 阅读 · 0 评论 -
堆(一)(Java)
二叉树的顺序存储1、存储方式使用数组保存二叉树结构,即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。这种方式的主要用法就是堆的表示2、下标关系(1)已知双亲(parent)下标,则左孩子下标 = (parent * 2)+ 1;右孩子下标 = (parent * 2)+ 2;(2)已知孩子(child)下标,则双亲下标 = (chi...原创 2020-04-08 14:26:29 · 137 阅读 · 0 评论 -
LeetCode练习题 — 删除链表中的重复元素(二)(Java)
题目描述给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。注意新链表中只有原链表中没有重复出现的数字示例思路1、链表为空,或链表只有一个结点,直接返回头结点;2、一般情况,新建一个链表用于存储原链表中的不重复的元素,从头结点(cur = head)开始,头结点与下一个结点元素不同,直接插入到新链表中;若头结点与下一个结点元素相同,那么在未到达链表...原创 2020-04-01 14:16:49 · 135 阅读 · 0 评论 -
二叉树的基础练习(Java)
题目:1. 二叉树的前序遍历2. 二叉树中序遍历 3. 二叉树的后序遍历 4. 检查两颗树是否相同5. 另一颗树的子树6. 二叉树最大深度7. 判断一颗二叉树是否是平衡二叉树8. 对称二叉树代码:class TreeNode { int val; TreeNode left; TreeNode right; public TreeNode(in...原创 2020-03-31 16:02:07 · 138 阅读 · 0 评论 -
二叉树的一些概念及练习(Java)
1、概念一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。二叉树的特点:a. 每个结点最多有两棵子树,即二叉树不存在度大于 2 的结点。b. 二叉树的子树有左右之分,其子树的次序不能颠倒2、二叉树的基本形态(5种)3、两种特殊的二叉树(满二叉树、完全二叉树)a. 完全二叉树: 完全二叉树是效率很高的数据结构,完全二叉树是由满...原创 2020-03-31 15:38:05 · 116 阅读 · 0 评论