自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图像基础&ImageMagick图像处理

目录lena-数字图像处理的趣闻轶事来源与playboy的版权问题流行原因数字图像类型--图像存储风格位图视觉质量colorspaceprofilequalitydepthcolor channelalpha channel格式介绍JPEGPNGGIFTIFFPSD/PSBBMPWebP矢量图IM的应用 - 为正确的工作使用正确的工具cropresize等比缩放固定宽高缩放draw文本text线条line矩形rectangle圆circle、ellipsewatermark图片水印文字水印lena-数字图

2021-06-30 17:11:38 1084

原创 邮件服务异常

问题系统jdk升级后,导致原有的邮件服务异常,本地测试报如下异常,提示协议被禁用解决方案主要是jdk11 java.security禁用了TLSv1, TLSv1.1这两个协议,删了即可。

2021-06-16 10:04:25 359

原创 Java--注解

1、什么是注解?注解是放在java源码的类、方法、字段、参数上的一种注释。注释会被编译器直接忽略,注解可直接被编译器打包进class文件,因此,注解是一种用作标注的元数据。无论是哪一种注解,本质上都一种数据类型,是一种接口类型。到 Java 8 为止 Java SE 提供了 11 个内置注解。其中有 5 个是基本注解,它们来自于 java.lang 包。有 6 个是元注解,它们来自于 java.lang.annotation 包,自定义注解会用到元注解。提示:元注解就是负责注解其他的注解。基本注解

2020-07-03 09:05:55 3268

原创 浏览器输入url按下回车后发生了什么

前端经典面试题之一(浏览器输入url按下回车后发生了什么)输入地址。DNS解析。TCP连接。发送http请求。返回http响应。浏览器解析渲染页面。断开连接。一、输入地址:当我们在浏览器输入地址的时候,浏览器已经在只能匹配到可能得到的url了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。二、DNS解析:DNS解析的过程就是寻找哪台机器上有你需要资源的过程。当你在浏览器中输入一个地址时,例如http://www.baidu

2020-06-20 09:40:17 370

原创 准备

排序1.排序算法的稳定性:a = b,a在b的前面,排序之后a任然在前,稳定排序,可能在后面为不稳定排序。稳定排序算法:冒泡,简单插入排序,归并排序不稳定排序:选择排序,快速排序,希尔排序都属于内部排序,不要外存。希尔排序先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:步骤1:选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;步骤2:按增量序列个数k,对序列进行k 趟排序;步骤3:每趟排序,根据对应的增量ti,将待排序列分割成若干长度为

2020-06-20 08:45:17 168

原创 面试题21. 调整数组顺序使奇数位于偶数前面

题目输入一个数组,实现一个函数来调整数组中数字的位置,使得所有奇数位于数组的前半部分,偶数位于数组的后半部分。示例输入:nums =[1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4]也是答案。提示:1 <= nums.length <= 50000 1 <= nums[i] <= 10000解题思路三种方法,暴力解法,首尾双指针,快慢指针法。第一种暴力解法,通过引入一个新的数组用于记录,从头开始遍历整个数组,奇数从新数组的开始为存入,偶数从最后一

2020-06-12 15:20:46 158

原创 面试题18. 删除链表的节点

题目给定单向链表的头指针和一个要删除的节点,定义一个函数删除该节点。示例输入:head = [4,5,1,9] ,val = 5输出:[4,1,9]题目中链表节点值互不相同解题思路两种方法,原理都差不多,定为节点,删除引用。即都是通过找val的节点,然后将val前一个节点的next指向val这个节点的next。方法一:单指针,算法流程:特例处理:当应该删除头结点时,直接返回head.next即可;初始化:定义一个 list = head ;定位节点:当list.next为空 或

2020-06-12 10:45:05 168

原创 面试题16.数值的整数次方

题目实现函数 double Power(double base,intexponent),求base的exponent次方。不使用库函数,同时不需要考虑大数问题,exponent是32位有符号整数。示例一输入:2.0,10输出:1024.00000示例二输入:2.0 ,-2输出:0.250000算法思路分析此题,几个关键条件,一是base的类型是double,二是不得使用库函数,次方n为无符号整数,n可能为负数。方法一 递归很明显,本题可以通过不断往下递归,每次递归将n除以2,

2020-06-11 15:17:42 112

原创 面试题15. 二进制中1的个数

题目实现一个函数,输入一个整数,输出该数二进制中1的个数。示例1: 输入:0000000000000000000010输出:1示例2:输入:11111111111111111111111111111101输出:31算法思路方法一:通过移位运算,每次将数n右移一位,判断该数最后一位是否是1,通过 n&1即可判断最后一位是否为1,通过 n>>1即可将数字右移一位,本题是无符号右移,在Java中,无符号右移是 >>> 即n>>>1.复

2020-06-11 11:41:17 251

原创 面试题14.剪绳子I II

题目给你一根长度为 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。示例 1:输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1算法思路动态规划状态定义:定义一个一维数组dp,dp[i]的值表示长度为i的绳子的最大乘积;

2020-06-10 17:25:09 153

原创 面试题12. 矩阵中的路径(DFS)

题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[["a","b","c","e"],["s","f","c","s"],["a","d","e","e"]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据.

2020-06-09 16:33:36 185

原创 面试题46. 把数字翻译成字符串(递归 + 动态规划)

题目给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”方法一 递归这道题我最先想到的方法是递归,从第一个数开始,每次取当前数字或先后取一个组成两位数,如果能够成

2020-06-09 14:12:37 278

原创 面试题11.旋转数组的最小数字

题目把一个数组最开始的若干元素搬到数组的末尾,称之为数组的旋转。 输入一个排序好了的递增数组的旋转,要求输出旋转数组的最小元素。如输入:[5,7,1,2,3]输出:1注意是否包含重复元素算法思路为了追求算法高效,减低复杂度,如果单单是找出最小元素,直接遍历一遍就可有得出,时间复杂度为O(N ),而很显然本题需要的不是该方法,有比挨个遍历数组更高效的方法,下面来分析题目,数组将原本已经升序排序好的数组通过分割,分割成为两部分,而左边那部分变为右边部分,如下图:通过上图分析,可以使用二分法

2020-06-06 17:28:35 136

原创 面试题10.斐波那契数列

题目写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。算法思路题目简单,动态规划很快的解决。定义状态:定义数组dp,用于存放斐波那契数列的前n项

2020-06-06 13:51:59 410

原创 面试题09. 用两个栈实现队列

题目用两个栈实现一个队列。队列的声明如下,实现他的两个函数appendTail 和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回-1)示例 输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”] [[],[3],[],[]]输出:[null,null,3,-1]算法思路栈的特性是先进后出,队列是先进先出,题目要求通过两个栈来实现队列,说明必有一个是辅助栈(可以看做队列

2020-06-06 10:59:35 134

原创 面试题29. 顺时针打印矩阵

题目输入一个矩阵,要求按照从外向里顺时针依次打印出每一个数字。示例:输入:matrix =[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]限制:0 <= matrix.length <= 1000 <= matrix[i].length <= 100本题与LeetCode 54题相同:https://leetcode-cn.com/problems/spiral-matrix/算法思路按照题目要求,打印顺序依次为

2020-06-05 17:32:12 134

原创 面试题07. 重建二叉树

题目给出某二叉树的前序遍历和中序遍历的结果数组,重建二叉树。假设输入的前序遍历和中序遍历中没有重复的数字。例如:给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:[3,9,20,null,null,15,7]与LeetCode 105 题重复:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-tr

2020-06-05 16:09:56 109

原创 面试题06. 从头到尾打印链表

题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2] 输出:[2,3,1]限制:0 <= 链表长度 <= 10000算法思路首先分析这道题,由于链表不能够从后往前遍历,只能够重头开始,但是题目要求逆序输出各个节点的值,所以利用辅助栈(先入后出)的方法来实现。具体方法是从头开始将链表的值入栈,然后依次出栈,就实现了逆序。代码/** * Definition for singly-linked list. *

2020-06-04 16:07:14 122

原创 面试题04.二维数组中的查找

题目在一个 n * m的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16,22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 给定 target = 5,返

2020-06-04 15:01:26 178

原创 面试题03.数组中重复的数字

题目找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3限制:2 <= n <= 100000算法思路本题思路大致分为三种。方法一:使用哈希表来记录,依次遍历,如果哈希表中没有该数字,就加入哈希集中,存在就说明该数字重复了,返回即可。该方法时间

2020-06-04 14:35:55 176

原创 128. 最长连续序列

题目给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。算法思路此题难度定位为hard,实则没这么困难,难就难在题目要求时间复杂度必须为O(n),也就是最多遍历一遍。既然有时间复杂度的要求,说明需要额外的空间,通过牺牲空间来换取时间。此处数组不好删除,所以,引入一个集合HashSet,存放数组元素,然后遍历每个元素,先前和向

2020-05-26 13:59:03 168

原创 Oracal排名Rank()系列

目录导言over([partition by col1] order by col2)rank(),dense_rank(),row_number()的区别导言在刷LeetCode 178.分数排名 时用到你了Rank()这个聚集函数,下面来看看题目吧。编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。+----+-------+| Id | Score |+--

2020-05-25 14:55:12 168

原创 58. 获取最后一个单词的长度

题目给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: “Hello World”输出: 5算法思路方法一: 直接通过库函数split(),将字符串以空格符分割为字符串数组,然后字符串数组最后一个字符串的长度即可。此方法时间和空间复杂度都是O(N),效率不算高,但是比较实用。方

2020-05-23 16:13:45 160

原创 正则表达式

导言正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作,是一种可以用于模式匹配和替换的规范。一个正则表达式就是由普通的字符(如字符 a~z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。String 类里就提供了如下几个特殊的方法:boolean matches(String regex):判断字符是否匹配指定的正则表达式;String replaceAll(String regex,String replcement):

2020-05-23 15:06:06 224

原创 Java基础知识

字符串1、字符串对象一旦被创建,其值是不能改变的,但是可以使用其他变量重新赋值的方式修改。2、字符串变量必须经过初始化才能够使用。3、String转换为intInteger.parseInt(str),将字符串str转换为整型int,Integer.valueOf(str),该方法将将字符串str转换为Integer对象,如果需要转换为int需要在后面加一个.intValue(),即Integer.valueOf(str).intValue();4、int 转换为StringString

2020-05-23 08:49:57 135

原创 2020/5/20 农行笔经

导言首先这次笔试题目总体来说还算不错。题目分两部分,选择题和编程题。选择题80个,60分钟,考察了SQL语句、数据库知识、编程语言C++,JAVA、测试相关、数学运算与推理几大部分,题目相对基础,但时间紧,不会就直接蒙了下一个,到点刚刚完成。编程题3个,90分钟,主要考察字符串和数组,最后一题当时没跑出来,差点时间修改,但主体代码已完成并提交了,不知道能够得分不,下面来看看这三个编程题目。题目是个大概,记得不是特别清楚。题目一一个由字母数字组合的字符串,先是一个字母随后紧跟一个数字,数字代表该字母

2020-05-20 18:36:11 819

原创 394. 两个数组的交集

题目给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [9,4]这是一个典型的数组类型题目,并且解题方法多样,主要分三种方法:哈希表,双指针,二分查找。哈希表首先定义两个哈希表 HashSet,第一个用于保存nums1数组中每个元素值;然后再依次遍历nums2中的每个元素,如果nums2中的元素

2020-05-14 16:09:28 162

原创 152.乘积最大子数组

题目LeetCode 152 题给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。算法思路最开始我用一个二维数组存放nums[i,j]的乘积,将所有i到j的乘积都计算出来存放在二维数组中,这样时间复杂度很高,会超

2020-05-13 10:20:44 187

原创 回文串系列

目录导言单一回文串最长回文子串中心扩展法动态规划导言回文,顾名思义就是正着读倒着读都是一样的,回文字符串系列问题在字符串问题中占了很大的比重,通过回文串可以延伸出很多相类似的题目,会用到不同的算法,各有千秋,例如动态规划、分治、回溯、双指针、递归等算法。下面就从最简单的回文字符串开始一步步深入讨论。单一回文串一个最简单的题目就是给出一个字符串,判断是否是回文串,其中这个字符串只包含连续的字...

2020-05-08 17:27:21 854

原创 动态规划(Dynamic Programming)

目录导言什么是动态规划??动态规划的思考步骤能用动态规划解决问题的特点实例Problem【爬楼梯】【不同路径I II】导言对于动态规划,一直都是算法笔面试中的重难点,并且动态规划是通过牺牲空间来换取时间的方式解决实际问题,本文旨在说明什么是动态规划,以及面对动态规划问题,一般的思考步骤以及注意事项等,并通过一些题目结合起来。什么是动态规划??【维基百科】动态规划(Dynamic progr...

2020-05-05 14:33:39 538

原创 跳跃游戏 I II

55.跳跃游戏 I算法思路我们的目标就是看每次的数字加上本省的位置是否能够到达最后的位置,可以通过贪心算法来进行求解。首先我们分析一下整体的过程,我们就是从每一个位置跳,如果能跳到最后的位置,那就说明可以到。我们就直接计算每一个位置能够跳的最远的距离,记录下来,之后全局来看最远的距离是不是能够到最后的位置或者超过最后的位置即可。主要分两部分:首先要看能不能跳到下一个位置其次记录每个位置...

2020-05-04 10:15:54 167

原创 72.编辑距离(动态规划)

题目72.编辑距离动态规划首先来说是动态规划(Dynamic Programing),说实话,我以前真没有完全理解并运用它,只是简单看了点皮毛,但在最近刷题时,发现很多题目运用动态规划很简单就解决了,也就激发了我学习并写这篇文章的兴趣。我在网上看有大佬说过90%的字符串类型的问题都可以运用动态规划解决。下面就说说动态规划的几大要素,动态规划就是用历史记录来解当前的解,避免重复计算,而...

2020-04-30 16:31:07 258

原创 只出现一次的数字系列

题目给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]算法思路此题看是简单,首最暴力的解法就是直接运用双层循环,此方法的时间复杂度为O(N^2),复杂度最高,效率低。方法二: 是运用map来解题,此种方法时间复杂度为O(N),但引入了map,空间复杂度为O(N),...

2020-04-28 11:54:07 137

原创 30.串联所有单词的子串

题目给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。示例输入:s = “wordgoodgoodgoodbestword”,words = [“word”,“good”,“best”,“word”]输...

2020-04-27 11:21:17 212

原创 199.二叉树的右视图

题目给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]算法思路本题的最终目的就是求二叉树每一层最右边的那个节点的值。既然是求每层的最后一个节点,可以采用DFS深度优先算法和BFS广度优先算法来进行求解。DFS我们按照 「根结点 -> 右子树 -> 左...

2020-04-23 17:43:47 142

原创 21.合并两个有序链表

题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4本题在链表题目中是简单题目,实现起来也不难,可以通过两种方法来实现。一、递归法这道题可以使用递归实现,新链表也不需要构造新节点,递归三个要素:终止条件...

2020-04-23 16:56:40 123

原创 Java实现二叉树的遍历

目录二叉树存储结构前序遍历中序遍历后序遍历二叉树二叉树的条件:本身是有序树树中各个节点的度不能超过2存储结构顺序存储结构:二叉树的顺序存储,指的是使用顺序表(数组)存储二叉树。需要注意的是,顺序存储只适用于完全二叉树。换句话说,只有完全二叉树才可以使用顺序表存储。因此,如果我们想顺序存储普通二叉树,需要提前将普通二叉树转化为完全二叉树。链式存储结构:从树的根节点开始,将各个节点...

2020-04-22 17:03:01 221

原创 1248.统计「优美子数组」

题目给你一个整数数组nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。示例 2:输入:nums = [2,4,6]...

2020-04-22 11:06:36 161

原创 20.有效的括号

算法思路本题堪称经典,使用了Map,List两个集合类,同时引入栈来处理,使问题简单化。首先定义HashMap用于存放一对括号的键值对; 如果首字母不是左括号,直接返回false; 在声明一个LinkedList,用于对输入的字符串处理,由于会频繁的向集合中插入,删除集合,所以使用LinkedList而不是用ArrayList,ArrayList在查询时效率更高,这里还可以用St...

2020-04-20 16:14:39 98

原创 17.电话号码组合

思路算法:由于每次输入的数字组合个数不同,通过暴力解法当数字个数太多时,会有多层循环,效率低下,可以采用递归回溯法。回溯法代码开着简单,要明白原理结合图更好理解,递归结束条件是非常重要的一环,不能够让其进入死循环。本题解题思路:...

2020-04-20 11:32:41 178

空空如也

空空如也

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

TA关注的人

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