自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java中异常以及它的处理方式

.相关概念:(1)异常是程序运行时产生的一种问题(不是编译期)(2)异常的种类有很多,不同种类的异常能够表示不同情况的问题2.基本语法:示例:public class Abnormal { public static void main(String[] args) { int[] arr = {1, 2, 3, 4}; try { System.out.println("before"); System.ou

2020-11-30 10:57:11 119

原创 泛型的基本,以及包装类

泛型诞生的作用:1.增加编译期间的类型检查:泛型是作用再编译期的一种机制,即运行期间没有泛型的概念2.取消类型转换的使用泛型分类:(1)泛型类:public class MyArrayList<E> { private E<> array; private int size;(2)泛型方法MyArrayList<Book> books = new MyArrayList<Book>();books.add(new Book());在上

2020-11-30 10:54:07 114

原创 数组拷贝的方法

public class normalTest { public static void main(String[] args) { int[] arr = {1, 2, 3, 4}; int[] arr2 = new int[arr.length]; // 第一种方法:循环添加至新数组中 for (int i = 0; i < arr.length; i++) { arr2[i] = arr[i];

2020-11-30 10:46:55 157

原创 重载和重写的区别

重写:(1)重写有一个必须的前提:重写只能发生再父类和子类之间,而且必须是子类对父类的的方法进行重写(2)重写子类的参数必须和父类的参数一模一样,不论是参数的类型或者参数的数量(3)返回值的类型需要相同(4)在权限修饰方面:子类的权限必须要大于或者等于父类的权限(5)子类抛出的异常不能大于父类抛出的异常重载:(1)重载的对象是:同一个类中的不同方法,也就是说一个方法可以对另一个方法进行重载操作(2)参数必须不一样,可以是参数的个数不同,参数的类型不同(3)对于方法的返回值没有要求必须相同

2020-11-30 10:43:17 142

原创 ArrayList和LinkedList的区别

LinkedList和ArrayList的差别主要来自于Array和LinkedList数据结构的不同。ArrayList是基于数组实现的,LinkedList是基于双链表实现的。另外LinkedList类不仅是List接口的实现类,可以根据索引来随机访问集合中的元素,除此之外,LinkedList还实现了Deque接口,Deque接口是Queue接口的子接口,它代表一个双向队列,因此LinkedList可以作为双向对列,栈(可以参见Deque提供的接口方法)和List集合使用,功能强大。因为Array.

2020-11-30 10:40:37 199

原创 数组和ArrayList的区别与联系

(1)首先,两者都是 Java 中重要的数据结构,经常会被使用到,数组是 Java 中当中的基础数据结构,而 ArrayList 是 Java Collection 框架下的 List 的接口的一个实现类,其内部实现原理就是依靠数组去实现的,只不过数组在构建的时候就确定的数组的长度,并且是不可变化的,而 ArrayList 可以根据情况自身进行数组的扩容,来达到动态数组的功能,所以 ArrayList 可以被理解为一种动态能够变化长度的数组,并且 ArrayList 当中还提供更多的方法来方便对于顺序表的操

2020-11-30 10:36:50 3486

原创 super和this的区别

在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用。class Student { public int age; public void std(){ //声明Student类的方法std() age = 15; .

2020-11-30 10:31:23 63

原创 equals和==的区别

==(1)如果比较的是基础数据类型,那么 == 比较的是他们的值是否相同(2)如果比较的是引用数据类型,那么 == 比较的是他们的引用地址是否相同,也就是比较的栈中局部变量表里的 reference 引用是否相同。equals(1)equals 是一个 Object 类中的方法,从源码可以知道,他比较的是两个对象的引用地址是否相(2)但是其他类会重写 Object 类中的 equals 方法,重新定义比较的规则,像 String 中就重写了 equals 方法,他比较的是两个 String 对象的

2020-11-23 14:32:45 420

原创 实现哈希桶,java

class HashBuck {static class Node {public int data;public int value;public Node next; public Node(int data,int value) { this.data = data; this.value = value; }}public Node[] array;public int usedSize; //总长度;public HashBuck()

2020-11-20 22:09:38 315

原创 前k个高频单词;(如果频率一样的话,让首字母小的排在前面) -- 难点 比较器的重写

public static List topKFrequent(String[] words, int k) {Map<String ,Integer> map = new HashMap<>();for(String str : words){map.put(str,map.getOrDefault(str,0)+1);}PriorityQueue q = new PriorityQueue<>(new Comparator() {@Overridepub

2020-11-17 19:37:54 105

原创 set集合已经map的最基本操作,不包含哈希表等;

map;public class TestMap {public static void main(String[] args) {Map<String,String> map = new HashMap<>();map.put(“玄策”,“电耗子”); //将key(玄策),以及对应的value(电耗子)放入map;map.put(“裴勤虎”,“老虎”);map.put(“云中君”,“走地鸡”);map.put(“瑶妹”,“永远的神”);map.put(“孙悟空”,

2020-11-17 14:18:54 107

原创 二叉搜索树的建立,删除关键字以及寻找关键字;

public class BinarySearchTree {static class TreeNode{public int val;public TreeNode left;public TreeNode right;public TreeNode (int val){this.val = val;}}//插入元素;TreeNode root = null;public void put(int key){TreeNode node = new TreeNode(key);i

2020-11-17 14:17:03 303

原创 实例内部类,静态内部类,匿名内部类已经本地内部类(本地内部类使用者很少很少)

//实例内部类;class Outclass {public int val = 99;private int val2 = 98;public static int val3;//1.拿到实例内部类对象的方式;Outclass.Innerclass innerClass = outclass. new Innerclass();//2.不能再实例内部类中定义一个静态变量;如果非要如此,加一个final, 能在编译时期确定的值;//3.实例内部类是否有额外的开销;有的;//4.this --

2020-11-16 20:04:04 121

原创 七种排序方法,包括直接插入,希尔排序,堆排序,选择排序,冒泡排序,快排,归并排序;

还分析了6中算法的时间复杂度以及空间复杂度还有稳定性;//在比较的过程中,交换的时候不发生跳跃交换,就是稳定//稳定可以变成不稳定,但是不稳定不能变成稳定public class TestSort {public static void main(String[] args) {int[] array = {45, 23, 35, 6, 723, 223, 43};bubbleSort(array);System.out.println(Arrays.toString(array));}/

2020-11-12 17:33:34 311 2

原创 MySQL数据库增删查找进阶版3, 附带数据库的代码

//查数量;select * from student where id>2;select count (*) from student where id>2;//sum - 总和,avg 平均数,max 最大,min 最小;–指定字段select sum/avg/max/min( + 查询内容) + from table where + 条件//group by ;—分组查询;查询列需要时分组字段,或者是聚合函数,非分组需要为分组的最小粒度;select * from table

2020-11-11 18:22:01 133

原创 二叉树的非递归三层遍历(java实现,利用栈)

1.前序遍历和中序遍历的代码一样,只是打印的位置不同;2.后续遍历的代码相对复杂点;其中要注意标记已经打印过的点,防止重复打印;void preOrderTraversal(TreeNode root){if(root == null) return;Stack stack = new Stack<>();stack.push(root);TreeNode cur = root;while (cur != null || ! stack.isEmpty()){while (cur

2020-11-10 17:13:18 157

原创 优先级队列的构建,以及堆排序的代码操作;

public class TestHeap {public int[] elem;public int useSize;public TestHeap(){ this.elem = new int[10];}public void initHeap(int[] array){ for (int i = 0; i < array.length; i++) { this.elem[i] = array[i]; this.useSize++

2020-11-10 16:44:03 72

原创 二叉树的基本操作以及部分练习题目,(很多很多题目)

class TreeNode {public char val;public TreeNode left;public TreeNode right;public TreeNode (char val){ this.val = val;}}public class TestBinaryTree {public TreeNode createTree() {TreeNode A = new TreeNode(‘A’);TreeNode B = new TreeNode(‘B’);

2020-11-09 18:24:57 136

原创 用java解决问题--检查替换后的词是否有效

给定有效字符串 “abc”。对于任何有效的字符串 V,我们可以将 V 分成两个部分 X 和 Y,使得 X + Y(X 与 Y 连接)等于 V。(X 或 Y 可以为空。)那么,X + “abc” + Y 也同样是有效的。例如,如果 S = “abc”,则有效字符串的示例是:“abc”,“aabcbc”,“abcabc”,“abcabcababcc”。无效字符串的示例是:“abccba”,“ab”,“cababc”,“bac”。如果给定字符串 S 有效,则返回 true;否则,返回 false。这个思路

2020-11-04 22:01:09 174

原创 最小栈(每次都可以从栈里提出一个最小的元素)

private Stack stack;private Stack minStack;/** initialize your data structure here. */public MinStack() {stack = new Stack<>();//入minStack = new Stack<>();//出}public void push(int x) { //1、stack是一定需要放元素的 //2、最小栈当中 是否存放数据 x<=

2020-11-04 15:02:14 118

原创 用栈实现队列(Java实现)

private Stack s1;private Stack s2;public MyQueue3() { s1 = new Stack<>(); s2 = new Stack<>();}public void push(int x ){ //加入元素 s1.push(x);}public int pop() { //弹出元素 if (s2.empty()) { while (!s1.empty()) {

2020-11-04 15:00:58 79

原创 用队列实现栈的操作(Java实现)

private Queue qu1;private Queue qu2;private int usedSize;/** Initialize your data structure here. */public MyStack3() { qu1 = new LinkedList<>(); qu2 = new LinkedList<>();}/** Push element x onto stack. */public void push(int x)

2020-11-04 14:59:54 170

原创 括号匹配问题(Java使用栈操作)

public boolean isValid(String s) {Stack stack = new Stack<>();//只要再以下过程当中 发现不匹配 直接returnfor (int i = 0; i < s.length(); i++) {//1、左括号进行入栈char tmp = s.charAt(i);if(tmp == ‘(’ || tmp == ‘[’ || tmp == ‘{’) {stack.push(tmp);}else {//2、判断栈是否为

2020-11-04 14:58:31 366

原创 二维网格的迁移(java实现)

给你一个 m 行 n 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。每次「迁移」操作将会引发下述活动:位于 grid[i][j] 的元素将会移动到 grid[i][j + 1]。位于 grid[i][n - 1] 的元素将会移动到 grid[i + 1][0]。位于 grid[m - 1][n - 1] 的元素将会移动到 grid[0][0]。请你返回 k 次迁移操作后最终得到的 二维网格。public List<List> shiftGrid(int[]

2020-11-03 23:58:29 869 2

原创 设计双循环顺序表

设计实现双端队列。你的实现需要支持以下操作:MyCircularDeque(k):构造函数,双端队列的大小为k。insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true。insertLast():将一个元素添加到双端队列尾部。如果操作成功返回 true。deleteFront():从双端队列头部删除一个元素。 如果操作成功返回 true。deleteLast():从双端队列尾部删除一个元素。如果操作成功返回 true。getFront():从双端队列头部获得一个元

2020-11-03 22:30:05 214

原创 约瑟夫问题2,(java实现报数)

题目描述现有n个人围坐一圈,顺时针给大家编号,第一个人编号为1,然后顺时针开始报数。第一轮依次报1,2,1,2…没报1的人出局。接着第二轮再从上一轮最后一个报数的人开始依次报1,2,3,1,2,3…没报1的人都出局。以此类推直到剩下以后一个人。现给定一个int n,要求返回最后一个人的编号。public class Joseph {public int getResult(int n) {if( n < 1){return -1;}LinkedList list = new Linked

2020-11-03 22:27:52 620

原创 猫狗收容问题(现在改题目了,元素进出栈)

给定一个栈及一个操作序列int[][2] ope(C++中为vector<vector>),代表所进行的入栈出栈操作。第一个元素为1则入栈,第二个元素为数的正负号;第一个元素为2则出栈,第二个元素若为0则出最先入栈的那个数,为1则出最先入栈的正数,为-1则出最先入栈的负数。请按顺序返回出栈的序列,并做异常处理忽略错误操作。测试样例:[[1,1],[1,-1],[2,0],[2,-1]]返回:[1,-1]public class CatDogAsylum {public ArrayLis

2020-11-03 22:26:00 179

原创 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。

public boolean backspaceCompare(String S, String T) {return build(S).equals(build(T));}public String build(String str){ StringBuilder sb = new StringBuilder(); for(int i = 0;i < str.length(); i++){ char ch = str.charAt(i); if(

2020-11-03 17:44:36 387

原创 Java实现棒球比赛(栈的利用)

你现在是一场采特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:整数 x - 表示本回合新获得分数 x“+” - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。“D” - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分数。“C

2020-11-03 17:18:42 414

原创 (Java实现,深刻的理解栈先入后出)栈的压入弹出

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。public boolean validateStackSequences(int[] pushed, int[] popped) {Stack stack = new Stack();int i = 0;for(

2020-11-03 16:58:16 319

原创 逆波兰表达式求值(java实现,栈)

此处输入一个字符串数组,包括数字,和±/,最少保证数字足够实现才行,比如[“2”, “1”, “+”, “3”, ""] ----》((2 + 1) * 3) = 9public int evalRPN(String[] tokens) {Stack stack = new Stack<>();int op1; //这是下一个元素进栈之前的两个栈里面的两个元素int op2;for (String s: tokens) {switch (s){case “+”:op2 = st

2020-11-03 16:40:16 125

原创 用Java实现将数组分为和相等的三部分 (分两步考虑)

给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1] 就可以将数组三等分。这个题目的思路在于,先判断前i项和是否为这个数组和的三分之一,然后在判断前j项和是否为数组和的三分之二,让j肯定要大于i+1,代码实现如下:

2020-11-02 22:36:23 831

原创 用Java实现小镇的法官(转换思路,把信任度转换为投票)

一个小镇里,按从 1 到 N 标记了 N 个人。传言称,这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在,那么:小镇的法官不相信任何人。每个人(除了小镇法官外)都信任小镇的法官。只有一个人同时满足属性 1 和属性 2 。给定数组 trust,该数组由信任对 trust[i] = [a, b] 组成,表示标记为 a 的人信任标记为 b 的人。如果小镇存在秘密法官并且可以确定他的身份,请返回该法官的标记。否则,返回 -1。这个题目,要把信任看作是投票模式,你信任n,就把票投给他,同时有人信

2020-11-02 21:09:47 245

原创 杨辉三角问题解决,Java

public List<List> generate(int numRoms) {List<List> ret = new ArrayList<>();if(numRoms == 0){return ret;}//第一行List one = new ArrayList<>();one.add(1);ret.add(one);//第二行for (int i = 1; i < numRoms; i++) {// 每一行都需要一个list

2020-11-02 17:39:41 178

原创 集合与数据结构3

**装箱(装包): 简单类型 —— 包装类类型1.自动装箱;2.显示装箱;拆箱(拆包):包装类型—— 简单类型1.自动拆箱2.显示拆箱*/public class TestDemo2 {public static void main (String[] args){List list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);System.out.println(l

2020-11-02 17:39:00 52

原创 集合与数据结构2

// 这是一个占符位,表示当前泛型类;//可以进行类型的自动检查//可以进行自动类型转换//简单类型不能作为泛型类型的参数,必须是包装类;或者其他的类//泛型类型的参数 不参与类型的组成// 坑:不能new泛型类型的 需要(T[])强转// 泛型怎么编译? : 擦除机制(擦除为Object,不是替换为Object)// 泛型是在编译时期的一个动作,只存在编译时期class MyArrayList { //泛型public T[] elem;public int uesdSize;pu

2020-11-02 17:38:12 60

原创 集合与数据结构1

public class TestDemo1 {public static void main (String[] args){Map<String,String> map = new HashMap<>();map.put(“憨憨”,“阿春”);map.put(“辣鸡”,“迪总”);map.put(“辣鸡”,“狗子”); // k值相同的话,会把v值更新为最后的v值;map.put(null,“坤坤”);//k值和v值都可以为null;map.put(null,nul

2020-11-02 17:37:36 73

原创 绳子分段问题(当分成n段长度为三的时候,乘积才能为最大)

给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。所以我们定义a = n/3.b = n%3;b有三种结果,为012;当为0的时候,直接返回3的a次方;为1的时候,把他加载最后一段上,返回3的(a-1)次方 4;为2的时候,多切一刀,就返回3

2020-11-01 17:49:28 1572

原创 求二进制中一的个数;java实现

public int hammingWeight(int n) {int res = 0;while(n != 0) {res += n & 1;n >>>= 1;}return res;}

2020-11-01 16:24:50 93

空空如也

空空如也

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

TA关注的人

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