自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用线程池优化sdk调用流程

场景:  现有一个人脸检测算法sdk包(C++),使用java中的jni调用该sdk提供出java可直接调用的接口,并打包成jar包(作为依赖包)供业务系统调用。  人脸算法执行流程为:(1)加载lisence -> (2)初始化FaceDetect、FaceAttribute 等对象 -> (3)传入图片数据进行检测 。 其中第一步加载lisence在整个系统的生命周期中,只需...

2020-02-22 01:04:38 465

原创 24.两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.递归解法:public ListNode swapPairs(ListNode head) { if(head==null || head.ne...

2019-06-19 21:50:13 112

原创 层序遍历二叉树类型

1.从上往下打印二叉树(层序遍历)题目: 往下打印出二叉树的每个节点,同层节点从左至右打印。思路:使用队列的先进先出的特性,在把队列中的节点取出同时把它的儿子插入队列,从而实现按层顺序打印。 //层序遍历 public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { Queue<T...

2019-06-16 23:12:15 172

原创 二叉树的下一个结点

题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解法:如图所示,可以归纳出两种情况:1)给定节点有右儿子,则下一个节点是右儿子的最左边儿子 ,2)给点节点没有右儿子,则一直找到当前节点的父节点是其父节点的左儿子的节点,比如(j,H 节点)。代码如下:class TreeLinkNode ...

2019-06-15 23:09:57 87

原创 把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路因为前几天刷过这道题:字符串的顺序排列,想到其实这题做法也是排列组合出各种可能的数字,然后比较大小,取其最小的即可。public class Solution { //输入一个正整...

2019-05-22 10:30:27 151

原创 整数中1出现的次数(从1到n整数中1出现的次数)

题目描述求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。思路:主要思路就是把数字转成字符串来处理,对每个数字字符串遍历期中1的个数...

2019-05-22 09:44:11 122

原创 最小的k个数

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:构建一个k大小的大根堆,遍历input数组,在堆未满时,直接存入元素,在堆已满时,则比较堆顶元素与带插入元素,若带插入元素更小,则替换堆顶元素。import java.util.ArrayList;import java.util.Comparat...

2019-05-22 09:20:19 85

原创 字符串顺序排列

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。思路:题目咋一看没思路,可以尝试着写几个字符串,推导一下各种可能,然后从中找找思路。比如abc 的组合,先想以a开头,以b开头,以c开头,在确定好了第一个字母的前提下,再按同样的步骤,确定第二个字母,以此类推。...

2019-05-21 11:33:23 1791 1

原创 二叉搜索树与双向链表

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:开局一张图。。。。其实主要就是按照中序遍历的过程,把树的节点递归连接成双向链表。public class Convert { public class TreeNode { int val = 0; TreeNode l...

2019-05-17 19:48:29 152

原创 复杂链表的复制

题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路:1.先把每个节点复制出一个节点并把每个复制出的节点连接到原来节点后面2.把原来每个节点的random指针复制到对应复制出的节点上3.把每个复制出来的节点分离出来...

2019-05-16 17:40:26 118

原创 在O(1)时间删除链表结点

题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。思路:主要是在链表是多节点并且要删除的节点非尾部节点时,可以使要删除的节点的下一个节点的值覆盖掉要删除节点的值,然后删除下一个节点,这个操作是O(1)复杂度,而删除节点为头节点是O(1)复杂度 ,删除节点为尾部节点的时间复杂度是O(n)。 所以O(1)时间复杂度 : ( O(1)*(n-1) + O(n) )...

2019-05-16 17:36:00 161

原创 归并排序

思想:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。算法复杂度为 O(nlogn) 级别public class MergeSort { public stat...

2019-05-15 19:36:46 116

原创 堆排序

思想:堆排序最主要在于构建堆这个数据结构上,构建好堆后,排序工作主要是插入,取出等操作。堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。构建堆的两个最主要操作是 shiftUp() 、 shiftDown()。public class QuickSort { public static void sort(int[] arr) { ...

2019-05-15 19:33:47 157

原创 快速排序

思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列public class QuickSort { public static void sort(int[] arr) { quickSort(arr, 0, ar...

2019-05-15 19:28:19 140

原创 插入排序

思想: 直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。public class InsertSort { public static void sort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (in...

2019-05-15 19:26:05 125

原创 选择排序

思想: 简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。public class SelectSort { public static void sort(int[] arr) { for (int i = 0; i < arr.length; i+...

2019-05-15 19:24:27 183

原创 冒泡排序

思想: 冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序public class BubleSort { public static void sort(int[] arr){ for(int i =0 ;i<arr.length ;i++){ bool...

2019-05-15 19:22:01 163

原创 栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路: 利用一个辅助栈空间,根据第二个弹出序列来对整个压栈过程进行模拟。public...

2019-05-15 14:25:22 128

原创 从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。(层序遍历)思路: 使用队列这种数据结构,利用先进先出这种特性。import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;public class PrintFromTopToBottom { public clas...

2019-05-13 19:36:11 77

原创 调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。自己思路:感觉这是直接一眼想到的思路。有什么错误求指正!!谢谢使用列表存储偶数,然后把所有奇数顺序移到数组前面,剩余空间放入列表中的偶数。时间复杂度是O(n),空间复杂度也是O(n)(空间复杂度应该可以优化,先判...

2019-05-11 13:01:59 113

原创 单例模式

单例模式** 作用: 确保一个类只有一个实例,并提供该实例的全局访问点**1.懒汉模式 – 线程不安全 :优点: singletonInstance 被延迟实例化,没有用到时不会被实例化,从而节省资源.缺点:线程不安全,当多个线程进入if(singletonInstance == null) 代码块中,从而多次实例化singletonInstance.public class Sing...

2019-04-06 17:09:39 77

原创 MVC模式

MVC: Model-View-ControllerView (视图层):为用户提供UI,重点关注视图的呈现。Model (模型层):业务数据的信息表示,关注支撑业务的信息构成,通常是多个业务实体的组合。Controller (控制层):调用业务逻辑产生合适的数据模型(Model),传递数据模型给视图层用于呈现。什么是MVC?1.MVC是一种架构模式,使得业务分层,...

2019-04-06 15:52:50 127

原创 CommonsMultipartFile转File

场景: CommonsMultipartFile shopImg = null; CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); if...

2019-03-12 17:42:28 921 3

原创 Synchronized关键字

1.Synchronized的作用能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果。2.Synchronized的地位1.Synchronized是Java的关键字,被Java语言原生支持2.是最基本的互斥同步手段3.是并发编程中的元老级角色,是并发编程的必学内容3.Synchronized的两个用法对象锁包括方法锁(默认锁对象为this当前实例对象)和同...

2019-01-12 22:34:08 295

原创 程序编译及代码优化

提问:为何HotSpot虚拟机使用解释器与编译器并存架构?为何HotSpot 虚拟机要实现两个不同的即时编译器(C1,C2)?程序何时使用解释器执行,何时使用编译器执行?哪些程序代码会被编译为本地代码?如何编译为本地代码?如何从外部观察即时编译器的编译过程和编译结果?先上思维导图:在前端编译器中,“优化”手段主要用于提升程序编码效率,之所以把javac这类将java代码转...

2019-01-06 23:29:56 221

转载 java内存区域

java内存区域:Java 与c++之间有一堵由内存动态分配与垃圾回收机制围成墙,外面的人想进来,里面的人想出去。对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为内一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方...

2018-11-21 22:41:45 111

转载 java对象创建过程

java对象创建的过程:(1)类加载检查:虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。(2)分配内存:在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大...

2018-11-20 22:03:04 189

原创 739. 每日温度

根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请输入 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。**提示:**气温 列表长度的范围是 [1, 30000]。每个气温的值的都是 ...

2018-11-05 22:33:17 1495

转载 JAVA反射机制

一、什么叫反射?首先给个定义:    JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。   什么意思呢,简单来说就是通过反射,我们在程序运行时可以获得程序或者程序集中每一个类型的成员和成员信息。   java程序中的一般的对象的类型...

2018-11-01 20:27:29 98

原创 108. 将有序数组转换为二叉搜索树

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5...

2018-10-23 22:20:38 57

原创 二叉树的层次遍历

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解法:思路: 使用队列,把每一层的节点给保存起来,再逐个读出,该层节点的值保存...

2018-10-22 21:01:31 164

原创 对称二叉树

给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加...

2018-10-21 11:10:11 75

原创 验证二叉搜索树

给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6输出: fa...

2018-10-15 15:44:17 107

原创 二叉树的最大深度

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解法1:思路: 思路很简单,使用递归的方法,往下搜索,直到最后左右儿子都为null。...

2018-10-14 23:02:32 83

原创 环形链表

给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?解法1:思路: 比较六的思路,我用两指针fast和low,从头开始,一个走两步,一个走一步。如果有环,就一定有追上的时候。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct Lis...

2018-09-27 10:57:40 848

原创 合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1-&gt;2-&gt;4, 1-&gt;3-&gt;4输出:1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4解法1(递归):思路: 初始化一个头节点head,两个链表的第一个节点比较,取较小的节点连接在head上,使用递归的方法使除去该节点的两个链表重复上述步骤,直至...

2018-09-26 09:05:38 106

原创 反转链表

反转一个单链表。示例:输入: 1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;5-&amp;gt;NULL输出: 5-&amp;gt;4-&amp;gt;3-&amp;gt;2-&amp;gt;1-&amp;gt;NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?解法1(递归):思路: 这位大佬有图,很清楚(链表翻转的图文讲解(递归与

2018-09-20 22:52:31 86

原创 删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1-&gt;2-&gt;3-&gt;4-&gt;5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1-&gt;2-&gt;3-&gt;5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解法:思路: 算法是只做了一趟扫描,初始化两个节点,先让一个节点从头开始走...

2018-09-19 11:55:32 68

原创 删除链表中的节点

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:4 -&amp;amp;gt; 5 -&amp;amp;gt; 1 -&amp;amp;gt; 9####示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变...

2018-09-19 11:38:42 135

原创 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字

2018-09-16 23:56:43 336

汽车之家爬取数据集超过30000条数据

汽车之家爬取数据集超过30000条数据

2019-02-15

空空如也

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

TA关注的人

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