自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode刷题|贪心算法|#1007 、行相等的最少多米诺旋转

LeetCode刷题|贪心算法|#1007 、行相等的最少多米诺旋转1、题目在一排多米诺骨牌中,A[i] 和 B[i] 分别代表第 i 个多米诺骨牌的上半部分和下半部分。(一个多米诺是两个从 1 到 6 的数字同列平铺形成的 —— 该平铺的每一半上都有一个数字。)我们可以旋转第 i 张多米诺,使得 A[i] 和 B[i] 的值交换。返回能使 A 中所有值或者 B 中所有值都相同的最小旋转次数。如果无法做到,返回 -1.示例 1:输入:A = [2,1,2,4,2,2], B = [5,2,6

2020-06-30 22:58:49 231

原创 LeetCode刷题|#910 最小差值

#910 最小差值1、题目给定一个整数数组 A,对于每个整数 A[i],我们可以选择 x = -K 或是 x = K,并将 x 加到 A[i] 中。在此过程之后,我们得到一些数组 B。返回 B 的最大值和 B 的最小值之间可能存在的最小差值。示例 1:输入:A = [1], K = 0输出:0解释:B = [1]示例 2:输入:A = [0,10], K = 2输出:6解释:B = [2,8]示例 3:输入:A = [1,3,6], K = 3输出:3解释:B = [4,6,

2020-06-30 18:26:51 378

原创 LeteCode刷题|动态规划(二分法、贪心、双指针)|#392判断子序列

LeteCode刷题|动态规划(二分法、贪心、双指针)|#392判断子序列1、题目给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例 1:s = “abc”, t = “ah

2020-06-30 16:01:10 292

原创 各查找算法Java实现

查找算法在Java 中,我们常用的查找有四种: 1) 顺序(线性)查找2) 二分查找/折半查找3) 插值查找4) 斐波那契查找一、线性查找package cn.jc.demo1;public class SeqSearch { public static void main(String[] args) { int[] arr={2,41,-6,99,65,27}; int index =seqSearch(arr,41); if(index==-1){

2020-06-30 15:57:59 131

原创 Java常用算法

Java常用算法一、二分查找算法(非递归)1、介绍​ 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找。​ 二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n 步,假设从[0,99]的队列(100 个数,即 n=100)中寻到目标数 30,则需要查找步数为㏒₂100 , 即最多需要查找 7 次( 2^6 < 100 < 2^7)步骤:首先确定整个查找区间的中间位置 mid = ( left + right

2020-06-29 21:43:27 3934 3

原创 Java锁详解

Java锁详解马上就要开始秋招了,我们面试中经常会被问到各种各样的锁,在此做个总结。以下这些锁并不全指锁的状态,有的指锁的特性,有的指锁的设计。一、乐观锁/悲观锁(图片摘自https://www.cnblogs.com/jyroy/p/11365935.html)乐观锁和悲观锁是一种广义上的概念,体现了看线程同步的不同角度,因此,锁从广义上就分为乐观锁和悲观锁。乐观锁:就是乐观思想,每次去哪数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,

2020-06-26 22:35:44 426

原创 Java的线程状态及其相互转换

线程的五个状态(生命周期)及其转换一、五个状态概述当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞 (Blocked)和死亡(Dead)5 种状态。尤其是当线程启动以后,它不可能一直"霸占"着 CPU 独自 运行,所以 CPU 需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换1、初始状态(new)实现Runnable、Callable接口或继承Threa

2020-06-25 22:36:00 317

原创 Java创建线程的四种方式及其比较

Java线程实现/创建方式一、继承Thread类1、介绍其实Thread类本身也实现了Runnable接口,代表一个线程的实例。启动线程的唯一方法就是通过 Thread 类的 start()实例方法。start()方法是一个 native 方法,它将启动一个新线 程,并执行 run()方法。2、使用public class MyThread extends Thread { public void run() { System.out.println("MyThread.run()"

2020-06-25 20:39:10 272

原创 各排序算法介绍、图解说明、代码详解、复杂度分析、选择

各排序算法介绍、图解说明、代码详解、复杂度分析、选择一、排序的分类:内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。常见的排序算法分类:我们这里主要介绍内排序的多种方法。二、内排序算法性能主要影响因素对于内排序而言,排序算法的性能主要受3个方面影响:1、时间性能排序算法的时间开销是衡量它好坏的最重要的标志。而内排序主要进行两种操作:比较和移动。所以我们应该尽可能少的关键字比较次

2020-06-24 15:49:57 754

原创 if语句与if else if else语句与if else语句与if if if语句

if语句与if else if else语句与if else语句与if if if语句1. if型结构:if(某个条件)​ 语句;使用场景:当满足这个条件时,执行某个操作,而不满足该条件时,什么都不做.在这种情况下就可以使用这种结构2. if else型结构:if(某个条件)​ 语句1;else​ 语句2;使用场景:当满足这个条件时,执行某个操作,当不满足这个条件时,执行另一个操作(和if型区别是如果不满足条件一个是执行另一个操作,而一个是什么都不做)3. i

2020-06-21 11:33:58 331

原创 C++中全局变量,局部变量,静态变量和常量

全局变量,局部变量,静态变量和常量1. 全局变量 全局变量是在所有函数体的外部定义的,**程序的所有部分(其他文件的代码)都可以使用**。全局变量不受作用域的影响。全局变量的生命周期一直到程序的结束,全局变量是静态存储方式。如果在一个文件中使用extern关键字来声明另一个文件中存在的全局变量,那么这个文件可以使用这个变量。通常都是在一个.CPP文件的开始声明这个变量,在其他需要用到这个变量的地方其头文件也就是.h文件中extern type vari;2. 局部变量(自动变量、寄存器变量) 局

2020-06-21 11:28:55 651

原创 c++中malloc和new的区别

1、new的基本用法C++中利用new操作符在堆区开辟数据堆区开辟的数据,由程序员手动开辟,手动释放,释放利用操作符 delete语法: new 数据类型利用new创建的数据,会返回该数据对应的类型的指针示例1: 基本语法int* func(){ int* a = new int(10); return a;}int main() { int *p = func(); cout << *p << endl; cout << *p <

2020-06-21 11:20:24 487

原创 Java线程常用方法详解

1、start()功能说明启动一个新线程,在新的线程运行run方法中的代码。注意start方法只是让线程从新建状态进入就绪队列排队,一旦轮到它来享用CPU资源时,就可以脱离创建它的线程独立开始自己的生命周期了。里面代码不一定立刻 运行(CPU 的时间片还没分给它)。每个线程对象的 start方法只能调用一次,如果调用了多次会出现IllegalThreadStateException举例public static void main(String[] args) { Thread t1

2020-06-20 22:22:19 400

原创 Spring中Bean对象的创建和注入

一、Bean的创建1、构造方法创建方法:无参构造函数+字段的setter方法注:我们不必在类中写任何构造函数,编译器会自己生成一个默认构造函数,如果我们 写了有参构造函数,就不会自动创建无参构造,也就不会创建Bean对象。直接上代码:xml配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="htt

2020-06-20 20:11:11 792

原创 深入解析Java内存区域

Java内存区域众所周知,Java虚拟机有自动内存管理机制,在这个机制下,我们不再 不需要像C++/C程序开发员这样为每一个new操作去写其对应的delete/free操作,这样就不容易出现内存泄漏和溢出2方面的问题。因为我们把内存控制权力交给了虚拟机,如果出现内存泄漏和溢出方面的问题,排查错误就必须要了解虚拟机内部是怎样使用内存的。下图是JDK8之后的JVM内存布局。(引自https://www.cnblogs.com/czwbig/p/11127124.html)1、私有or共享?按线程是

2020-06-20 18:38:16 707

空空如也

空空如也

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

TA关注的人

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