自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 问答 (2)
  • 收藏
  • 关注

原创 同步方法实现线程同步

继承自Threadpublic class Threa_1 extends Thread{ static int tickets=50; public static void main(String[] args) { Threa_1 t1=new Threa_1(); Threa_1 t2=new Threa_1(); t1.start(); t2.start(); } @Override publ

2021-10-24 21:54:19 202

原创 同步代码块实现线程同步

继承自 Thread类public class Thread_ extends Thread{ private static Object obj=new Object(); private static int tickets=100; @Override public void run(){ while(true) { synchronized (obj) { if (tickets &gt

2021-10-24 21:30:33 204

原创 返回字符串中第一个唯一字符的下标

借助哈希表的存储性质来进行 相关的操作class Solution { public int firstUniqChar(String s) { Map<Character,Integer> map=new HashMap<>(26); char [] chars=s.toCharArray();//将字符串转换成为 字符数组 并放在字符数组中 for (char ch:chars){ map.put(ch, map.g

2021-10-19 20:59:21 217

原创 KMP实现字符串的匹配

package learnmen;import java.util.Arrays;/** * 解决模式串 在文本串中是否出现过的算法 如果出现过找最早位置的算法 * Knuth-Morris-Pratt字符串查找算法 简称是KMP算法 常用在 一个文本字符串中 查找 一个模式串 p的出现位置 * kmp算法中的关键是 得到部分匹配表 然后 根据部分匹配表中的数据 来实现我们的优化移动 模板字符串 * */public class Kmp { public static v

2021-10-19 19:28:33 261

原创 图的广度优先遍历以及深度优先遍历

图的广度优先以及深度优先``package Learn.Graph;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;/** * 图的广度优先搜索 * 广度优先搜索需要使用一个队列来保持 访问过的节点的顺序 ,以便按照这个顺序来访问 这些节点的邻接节点 * * 算法步骤: * 1.访问初始节点并将该节点标记为已访问 * 2.节点 v入队列 * 3.当队列非空的时候,继续执

2021-10-17 19:55:44 91

原创 Java创建图结构

使用邻接矩阵的形式创建 图import java.util.ArrayList;import java.util.Arrays;public class Demo01 { //需要 arrayList 来存储我们的顶点 private ArrayList<String> vertexList; //这里顶点的数据结构是ArrayList 使用泛型进行了数据类型的规定 private int [][]edges;//二维数组实现我们的矩阵表示 存储图的对

2021-10-16 22:18:03 679

原创 进行整形的反转

对整数进行反转 如果反转之后的整数超过了范围 就返回0 public int reverse(int x){ int res=0; while(x!=0){ int t=x%10; //对10取余数 得到末位的数字 int newRes=res*10+t; //判断是否溢出 if((newRes-t)/10!=res){ //如果溢出就直接返回0

2021-10-13 08:49:14 105

原创 Java双指针反转字符串

利用双指针来反转 字符数组public class reveserString { public static void reveserSting( char[] s){ int i=0,j=s.length-1; //采用双指针的方式进行修改 char temp; while(i<j){ temp=s[i]; s[i]=s[j]; s[j]=temp;

2021-10-13 08:28:44 221 2

原创 Java哈希表实现求两数之和

在Java中使用哈希表来求解两数之和public int[] twoSum1(int [] nums, int target){ Map<Integer,Integer> map=new HashMap<>(); int [] arr=new int[2]; for (int i = 0; i < nums.length; i++) { if(map.containsKey(target-nums[i])

2021-10-12 23:08:07 316

原创 Java双指针实现两数之和

利用双指针实现求两数之和public int [] twoSum(int [] nums,int target){ //双指针实现求解两数的和 int maxArea=nums.length-1; int i=0; int j=1; while(nums[i]+nums[j]!=target){ if(j==maxArea){ i++; j

2021-10-12 22:56:44 307

原创 Java异或运算

查找数组中只出现过一次的数值 public static int singleNumber (int [] arr){ int a=0; for(int i:arr){ a^=i; } return a; }

2021-10-11 19:54:42 88

原创 Java实现数组末位加1

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1] public static

2021-10-11 19:53:13 395

原创 Java数组移动0

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]public static void moveZeroes(int [] nums){ /** * 把所有非0的数向前移动 然后把后面的数全部赋值为0就可以实现 */ if (nums == null || nums.length ==

2021-10-11 19:51:39 141

原创 Java判断数组中有没有相同的元素

如果数组中有相同的元素就返回true 否则返回falsepublic class Demo03 { public Boolean repeat(int [] nums) { /** * 要能够考虑到利用数据结构进行辅助的判断 * * HashSet 哈希表是不允许有相同的元素出现的 所以可以借助哈希表进行处理 */ Set<Integer> set =new HashSet&lt

2021-10-11 16:22:29 1933

原创 实现旋转数组

对数组进行旋转输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释:向右旋转 1 步: [99,-1,-100,3]向右旋转 2 步: [3,99,-1,-100]

2021-10-11 15:51:23 67

原创 买卖股票的最佳时机

如果我们知道了股票每天的价格如何才能够实现获得最大的利润?public class Demo01 { //获取最大的利润 如果我们知道股票每天价格为多少的话 想要求解最大的利润 就是 public static void main(String[] args) { int [] prices={7,1,5,3,6,4}; //这是每一天股票的价格 System.out.println(maxProfit(prices));

2021-10-11 15:25:38 69

原创 Java TreeMap 集合

集合中的TreeMapimport java.util.TreeMap;public class Order { public static void main(String[] args) { //TreeMap 是Java集合中的 红黑树结构 其本质上是一个有序表 对传入的数据根据key的值进行排序 //也正因为它是一种有序的结构 所以我们可以进行相关操作 TreeMap<Integer, String> treeM

2021-10-10 14:11:45 124

原创 关于子类泛型类的继承

关于子类泛型类的继承:package generic;public class GenericExtend <E>{ //泛型类的继承 /** * 1.子列也是泛型类的话 子类和父类的泛型类型要保持一致 * class ChildGeneric<T> extends Generic <T> * 2.子类不是泛型类 父类需要明确泛型的数据类型 * class ChildGeneric extends Gen

2021-10-09 12:45:18 508

原创 Java泛型

Java泛型package generic;import java.util.ArrayList;/** * * 泛型产生的背景 */public class BackGround { public static void main(String[] args) { //对象函数的调用需要在 main 方法中进行相关的调用 这里更多的是考虑到 static 静态修饰符的影响 //泛型更多的是在集合当中的使用 ArrayLi

2021-10-09 12:18:03 79

原创 Java线程通信之管程法

多线程之间的通信package Demo;public class Consumer { public static void main(String[] args) { //生产者与消费者 Container container =new Container(); new productor(container).start(); new Consumer1(container).start(); }}//定

2021-10-04 21:17:04 95

原创 关于Java的显式锁

Java不仅提供了 synchronized 用来作为锁 而且还提供了 Lock()作为锁 二者的不同点在于 后者实现的是显式的进行锁的添加与解除 并且只能够作用于代码块 ,但是可以使得cpu进行更好的调度 提高相应的性能。 但是前者的优点在于 不仅能够对代码块进行加锁,还能够对方法进行加锁。import java.util.concurrent.locks.ReentrantLock;public class TestLock { public static void main(

2021-10-04 20:17:45 125

原创 Java线程死锁

synchronized 修饰代码块的时候获得多个线程对象的锁的时候就会造成线程死锁的情况出现 示例如下:public class Deadlock { public static void main(String[] args) { //多线程中的死锁问题 如果某一个代码块 同时拥有两个对象的锁 就有可能会发生死锁的情况 //多个线程互相抱着对方所需要的资源 然后形成了僵持 Makeup makeup1=new Makeup(0,"小

2021-10-04 19:51:54 86

原创 深入理解归并排序之求小和问题

在一个数组中,将比当前元素小的当前元素左侧元素累加所求的和成为这个数组的小和。对小和的求解,我们首先想到的可能是利用遍历的方式将当前元素左侧的元素全部遍历并与当前元素进行比较,然后依次相加得到最终的结果,这个方法也的确可以求出正确的结果,但是时间复杂度相对而言较高,所以我们在这里利用归并排序的方式进行操作。求左侧有多少元素比当前元素小,我们可以转换为求右侧有多少元素比当前元素大 ,这样就说明对当前元素在计算小和的时候出现的次数。这里需要注意一个点就是当左右两侧的数据相等的时候,我们需要将右侧的数据先放

2021-10-04 11:33:09 217

原创 Java归并排序

Java实现归并排序:import java.util.Arrays;public class GuiBing { public static void main(String[] args) { //归并排序也是利用递归进行的排序 int []arr=new int[]{2,6,3,65,9,8,7,50}; Process(arr,0,arr.length-1); System.out.println(Arrays.toSt

2021-10-03 23:18:57 66

原创 Java插入排序

利用异或运算实现插入排序import java.util.Arrays;public class InsertSort { public static void main(String[] args) { //实现插入排序 int [] arr =new int[]{5,3,6,78,6,3,7}; sort(arr); System.out.println(Arrays.toString(arr)); }

2021-10-03 16:38:11 56

原创 位运算(异或)求数组中出现过奇数次的1种与2种数

位运算是比算数运算快得多的一种运算方法package algorithm.sort;public class Operation { public static void main(String[] args) { //数组中只有一种数出现奇数次,其他的数出现偶数次, 问这个奇数次的数是 int [] arr=new int[]{1,2,3,1,2}; Judge(arr); //数组中有两个数出现奇数次,其他的两个数均出现

2021-10-03 16:20:18 125

原创 时间复杂度比较以及额外空间复杂度O(1)

在评价一个算法的优劣的时候 一般情况之下我们会先根据算法的时间复杂度的指标进行一个判断,看算法是属于O(N平方) 或者O(N立方) 指数数值越小则证明时间复杂度相对较低 但是当二者的指数指标相同的时候 就要根据实际运行的结果来判断到底哪一种算法更优,...

2021-10-03 14:40:17 1361

原创 List小示例Java

利用list集合实现将对象的价格进行排序import java.util.*;public class Test2 { public static void main(String[] args) { List list=new LinkedList();// List list=new Vector();// List list=new List(); list.add(new Book1("红楼梦","曹雪芹",100));

2021-10-03 13:18:46 191

原创 uniapp实现页面之间的参数传递

在进行页面的跳转的时候,往往需要我们将一些参数携带着传递过去上示例,将要跳转的页面需要之前的页面传递相对应的id代码如下:<view @click="toDetail(item.id)"> 实现绑定,同时传递参数methods方法中:toDetail(id){ uni.navigateTo({ url: './home?id='+id }) } 携带id 这里实现的是动态的id 只从后端生成的id 如果你需要携带的参

2021-10-01 18:04:51 1686 2

原创 上级目录与本级目录

关于上级目录与本级目录./ 接的是本级目录../ 则是上级目录

2021-10-01 17:50:23 440

原创 !importmant的作用

前端设计中,在调节css样式的时候我们总是会看到importmant这个属性,它的作用就是提升相对的属性的权重 ,当我们为属性设置了内联样式的时候,就会首先执行内联样式中的样式!

2021-10-01 17:12:50 284

原创 简单使用List中的方法

对List中的方法进行简单的使用import java.util.ArrayList;import java.util.List;public class Test2 { public static void main(String[] args) { List list=new ArrayList(); list.add("你好"); list.add("你好"); list.add("你好"); list.a

2021-10-01 11:22:07 66

原创 集合List的基本介绍与方法

import java.util.ArrayList;import java.util.List;public class List_ { public static void main(String[] args) { List list = new ArrayList(); list.add("jock"); list.add("tom"); list.add("hello"); list.add("mark"

2021-10-01 11:10:54 64

原创 迭代器对集合进行遍历

import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;//Collectios 是集合类的上层接口 试下接口的具体实现类有 List ArrayList 等//Collections 是针对集合类的一个 帮助类 实现相对应的集合中的元素的相关操作public class iterator { public static void main(String[] a.

2021-10-01 08:33:26 187

原创 集合Java

public class Collection_ {public static void main(String[] args) {//Collections中的方法//接口是不能够被被new进行创建的 我们在这里利用其子类进行创建演示相关的方法 List list =new ArrayList(); //Java中list是一种特殊的集合结构 是一个有序的集合 其本质上是一个接口 一般允许 重复元素的存在 //方法 add 实现 元素的添加

2021-09-30 20:34:47 73

原创 对二叉树进行线索化Java

线索二叉树将每个节点的前驱节点与后继节点与节点本身进行了一个连接,而我们需要进行的操作是如果节点的左节点为空 那么就让左节点 指向其前驱节点右节点为空就让其指向其后继节点 ,在这里又要注意的一点是:根据遍历次序的不同 我们有前序线索树,中序线索树,以及后续线索树。这样的话,我们就还需要进行一个操作就是对每个节点的左右节点的类型 进行标识,究竟是左子树还是前驱节点还是右子树,以及是后续节点在节点类中 我们需要添加两个标识符用于 标识区分到底下一个节点是属于左右子树,还是属于前驱节点或后继节点 int l

2021-09-29 16:28:21 108

原创 删除数组中重复出现的元素

删除数组中重复出现的元素:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = remove

2021-09-27 22:04:11 148

原创 顺序二叉树的遍历

顺序二叉树的遍历 :顺序二叉树首先要满足的条件是:二叉树应当是一个完全二叉树几个关于完全二叉树的结论 :第n个元素的左节点为 :2n+1 右节点是 2n+2;任意一个节点的父节点是 (n-1)/2代码实现:public class ArrayBinaryTree { //数组顺序存储形成的树 int [] data; public ArrayBinaryTree(int []data){ this.data=data; }

2021-09-27 14:24:06 169

原创 IDEA编译时候报错

错误信息:Module 'Javastudy' production: java.lang.ClassCastException: org.jetbrains.jps.builders.java.dependencyView.TypeRepr$PrimitiveType cannot be cast to org.jetbrains.jps.builders.java.dependencyView.TypeRepr$ClassType在菜单中找到 ”Build“ 选项点击 Rebuild P

2021-09-27 13:22:40 433

原创 二叉树的查找 Java

实现对二叉树的查找创建树的类public class Tree { TreeNode root; //设置跟节点 public void setRoot(TreeNode root){ this.root=root; } //获取根节点 public TreeNode getRoot(){ return root; } public void fontShow() { root.fontS

2021-09-27 09:26:43 178

空空如也

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

TA关注的人

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