- 博客(65)
- 收藏
- 关注
原创 剑指offer(十四) 链表中倒数第k个结点
链表中倒数第k个结点题目思路思路1 - 栈思路2 - 循环数组题解题解1 - 栈题解2 - 循环数组反思题目输入一个链表,输出该链表中倒数第k个结点。思路思路1 - 栈先将所有结点入栈,然后出栈,第k个出栈的即为所求结点。思路2 - 循环数组定义大小为k的循环数组,循环赋值,直到所有结点赋值完毕。此时,循环数组中存储的值是倒数k个结点,最后一个结点的下一位对应的就是倒数第k个结...
2019-08-15 15:38:54
363
原创 【Leetcode 384】Shuffle an Array - MEDIUM
题目Shuffle a set of numbers without duplicates.打乱一组不重复的数字。示例思路思路1最容易想到的思路,是第一次从n个数中随机选一个,第二次从n-1个中选,第三次从n-2个中选,第n次中选唯一的一个,一共是 n! 种结果。于是选择用一个list来存储下标,每次随机选择一下标,将该下标对应的元素值赋给新数组,选择完成后,将选定下标从list...
2019-08-15 14:30:44
277
原创 洗牌算法
洗牌算法导语抽牌 - Fisher-Yates Shuffle换牌 - Knuth-Durstenfeld Shuffle插牌 - Inside-Out Algorithm扩展 - 蓄水池抽样导语在之前的【Leetcode 384】Shuffle an Array - MEDIUM,打乱一个数组的问题中,我们有用到洗牌算法,其关键在于生成等概率的结果。而联系实际的洗牌过程,都有哪几种方式呢?...
2019-08-15 14:29:10
515
原创 剑指offer(八) 跳台阶
跳台阶题目描述思路题解题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路这是一个递归求解的问题。我们先来分解父问题,不妨以最后一步跳了几级为划分依据:跳了1级,即青蛙先跳到第n-1级,再跳1级,该种情况下,跳法总数等同于青蛙跳到n-1级的跳法总数;跳了2级,即青蛙先跳到第n-2级,再跳2级,该种情况...
2019-08-09 16:40:58
257
原创 剑指offer(十二) 数值的整数次方
数值的整数次方题目描述思路题解反思题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路本题非常简单,是典型的用递归可以求解的问题。但是实际运行,需要考虑多种情况,比如底数为0、幂为负数,以及要关注递归的结束条件。判断底数是否为0, 若为0, 直接返回结果0;判断幂是否为负数,若为负数,则返回求解 底数的倒数的...
2019-08-09 16:21:12
243
原创 剑指offer题解目录(个人 / Java)
剑指offer题解目录〇〇一 ~ 一十一十一 ~ 二十二十一 ~ 三十三十一 ~ 四十四十一 ~ 五十五十一 ~ 六十六十一 ~ 六四〇〇一 ~ 一十(一) 二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。(二) 替换空格请...
2019-08-09 15:59:48
316
原创 剑指offer(四) 重建二叉树
重建二叉树题目描述思路题解反思思路扩展题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路我们先来弄懂前序遍历和中序遍历的特点:前序遍历:根结点、左子树、右子树。中序遍历:左子树、根...
2019-08-09 15:42:35
218
原创 剑指offer(四十)数组中只出现一次的数字
数组中只出现一次的数字题目描述思路题解题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路这道题是典型的2n+2的问题,是2n+1问题的变种。我们不如先来看,如何解决2n+1的问题:一个整型数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。我们可以利用异或运算的性质来求解:0^a = a; ...
2019-08-06 18:57:03
188
原创 【Leetcode 209】Minimum Size Subarray Sum - MEDIUM
【Leetcode 209】Minimum Size Subarray Sum - MEDIUM题目思路题解反思复杂度分析题目Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. ...
2019-07-21 23:07:10
216
原创 【Leetcode 718】Maximum Length of Repeated Subarray - MEDIUM
【Leetcode 718】Maximum Length of Repeated Subarray - MEDIUM题目思路题解反思复杂度分析题目Given two integer arrays A and B, return the maximum length of an subarray that appears in both arrays.给定两个整数数组A,B,返回这两个数组中连...
2019-07-21 22:31:48
337
原创 剑指offer(三十)连续子数组的最大和
连续子数组的最大和题目描述思路题解题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止...
2019-07-21 11:35:55
193
原创 【Leetcode 516】Longest Palindromic Subsequence - MEDIUM
【Leetcode 516】Longest Palindromic Subsequence - MEDIUM题目思路题解反思复杂度分析思路反思扩展题目Given a string s, find the longest palindromic subsequence’s length in s. You may assume that the maximum length of s is 10...
2019-07-21 10:27:08
222
原创 【Leetcode 5】 Longest Palindromic Substring - MEDIUM
【Leetcode 5】 Longest Palindromic Substring - MEDIUM题目思路题解题解反思复杂度分析思路反思扩展题目Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.给定字符串s,找...
2019-07-21 09:47:58
293
原创 【Leetcode 70】Climbing Stairs -EASY
【Leetcode 70】Climbing Stairs -EASY题目思路题解反思复杂度分析思路反思题目You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinct ways can y...
2019-07-20 23:28:34
254
原创 【Leetcode 53】 Maximum Subarray - EASY
【Leetcode 53】Maximum Subarray - EASY题目思路题解反思复杂度分析思路反思题目Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.给定整数数组...
2019-07-20 23:05:37
208
原创 进程和线程的联系与区别
进程和线程导语导语进程和线程的区别、和进程间通信、线程间通信都是常见的面试题。我们知道线程是进程的一部分。但是它们之间还有哪些区别和共通处呢?...
2019-05-08 10:38:51
207
原创 http中get和post的区别
http中get和post的区别导语相同点不同点关于参数关于回退关于缓存关于请求包对比总结导语get和post的区别是面试中经常会被问到的问题。那么同样作为http请求,他们之间究竟有什么异同呢?相同点从本质上讲,get和post都是http请求,都是tcp连接,是无区别的。不同点关于参数考虑参数的位置:get请求的参数位于url中,而post请求的参数位于request body...
2019-05-07 12:04:09
4898
原创 说说测试——白盒测试
说说测试——白盒测试导语白盒测试错误类型测试方法等价类划分法边界值分析法错误推测法因果图法判定表驱动法正交试验设计法功能图法场景法导语上一篇说说测试——黑盒测试,我们介绍了关于黑盒测试的知识,这一篇来介绍白盒测试的特点以及常见的测试样例设计方法。白盒测试错误类型测试方法等价类划分法边界值分析法错误推测法因果图法判定表驱动法正交试验设计法功能图法场景法...
2019-05-06 21:01:24
448
原创 说说测试——黑盒测试
说说测试——黑盒测试与白盒测试导语黑盒测试白盒测试导语关于测试,最基础的知识就是黑盒测试与白盒测试的概念与特点。于是借着这篇博客进行总结与分析。黑盒测试所谓黑盒,就是对白盒测试...
2019-05-06 20:32:57
922
原创 Android的四大组件
Android的四大组件导语ActivityServiceBroadcastReceiverContentProvider导语一个Android应用程序需要由多个基本构建块组成,也就是应用程序组件。这些组件由应用清单文件松耦合的组织。其中AndroidManifest.xml描述了应用程序的每个组件以及他们之间如何交互。这篇博客主要来介绍一下Android的四大组件以及他们起到的主要作用。...
2019-05-05 21:57:17
286
原创 Activity的生命周期详解
Activity的生命周期详解导语生命周期onCreate()onStart()onResume()onPause()onStop()onDestroy()onRestart()情形分析启动activity退出activity从A启动B从B返回A横竖屏切换点击Home键返回主屏点击App返回应用程序结束语导语Activity是Android最常用的四大组件之一,了解其生命周期有利于我们根据业务...
2019-05-05 21:48:45
489
原创 Activity的栈&&四种启动模式
Activity的栈&&四种启动模式导语Android系统如何管理activityActivityManagerService,AMSProcessActivityStackActivityTask四种启动模式standardsingleTopsingleTasksingleInstance图解activity复用的生命周期导语我们知道,手机系统上一般会打开多个app,而每个a...
2019-05-05 15:57:40
264
原创 面向过程和面向对象
面向过程和面向对象导语面向过程什么是面向过程面向过程的优缺点面向对象什么是面向对象面向对象的特点封装继承多态面向对象的优缺点结束语导语大家都知道,C语言是面向过程的语言,C++和Java是面向对象的语言。但如果细究起来,究竟什么是面向过程?什么是面向对象?大家可能又会有点迟疑,给不出有条理的答案。我也在这方面有所欠缺,于是打算借着这篇博客梳理一下面向过程和面向对象的特点与区别。面向过程...
2019-04-22 11:37:37
276
原创 剑指offer(六十一) 序列化二叉树
序列化二叉树题目描述思路题解题目描述请实现两个函数,分别用来序列化和反序列化二叉树思路首先考虑将二叉树序列化,可以使用前序、中序、后序或者层次遍历的方式。在做这道题之前,我考虑到的是,至少需要两个遍历序列才能恢复出一颗二叉树。实则不然,如果要求输出的不是标准的前、中、后序遍历序列,我们完全可以对叶子节点进行标记。比如,叶子节点的左右子结点的值可以标记为"#",如此一来,我们也可以通...
2019-04-21 10:44:23
327
原创 设计模式 之 数据访问对象模式(DAO模式)详解
设计模式 之 数据访问对象模式(DAO模式)详解导语DAO模式什么是DAO模式DAO模式的应用场景DAO模式的优缺点DAO模式的实现结束语导语DAO模式什么是DAO模式DAO模式的应用场景DAO模式的优缺点DAO模式的实现结束语...
2019-04-16 11:46:24
3986
1
原创 创建和运行第一个Java Web项目
创建和运行第一个Java Web项目导语创建项目运行项目创建JSP文件运行JSP文件结束语导语这篇是关于第一次创建Java Web项目的操作,在此之前,请确保你已经完成了Tomcat服务器的配置:(Win10+64位+Eclipse)Tomcat应用服务器安装与配置。创建项目点击File --> New --> Dynamic Web Project.填写New Dyna...
2019-04-15 13:44:41
1049
原创 剑指offer(四十七) 求1+2+3+...+n
求1+2+3+...+n题目描述思路题解题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路看到这一题的第一反应,递归啊!再仔细看看限制条件,不能使用条件判断语句…那岂不是没办法递归中止了?这也太坑了!!仔细想想,只有逻辑运算能够解决这个问题了。主要是用到逻辑运算的以下特性:&am...
2019-04-12 15:25:43
283
原创 剑指offer(六) 旋转数组的最小数字
旋转数组的最小数字题目描述思路题解题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路既然要快速寻找最小数字,那么很容易就想到二分法来判断。那么如何判...
2019-04-12 15:06:54
254
原创 剑指offer(五) 用两个栈实现队列
用两个栈实现队列题目描述思路题解题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路此题与【Leetcode 232】 Implement Queue using Stacks - EASY类似,上篇中有详细的思路与图解。stack1用于存放倒序后的数据,stack2用于实现倒序。正常的思路是,每次push进入stack1之后,都将所有元...
2019-04-11 17:39:53
229
原创 [JVM] 0x00 Java内存结构/JVM内存结构
Java内存结构/JVM内存结构导语概览PC寄存器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存结束语导语学习Java虚拟机,首先要学习的就是内存结构。Java内存结构和JVM内存结构是同一个概念,指的是Java虚拟机的运行时数据区。而这篇博客主要是来介绍JVM内存结构是什么样的。概览以上两张图介绍了Java虚拟机的运行时数据区,我们可以看到以下的几块内存空间,接下来就...
2019-04-11 12:38:15
344
原创 (Win10+64位+Eclipse)Tomcat应用服务器安装与配置
(Win10+64位+Eclipse)Tomcat应用服务器安装导语安装步骤配置步骤添加环境变量启动Tomcat使用Tomcat在Eclipse中配置结束语导语要开始接触Java Web,首先来进行环境配置。在这篇安装记录之前,先交代一下我的环境:win10系统+Eclipse4.5.2。安装步骤点击官网地址,点击右侧Download下的Which version? 来根据需要查找自己...
2019-04-10 16:22:00
1835
原创 剑指offer(十一) 二进制中1的个数
二进制中1的个数题目描述思路题解反思思路拓展题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路分情况讨论:正数n的二进制中1的个数,直接使用n不断对2取余转换为二进制数,余数为1的次数也就是二进制中1的个数。0的二进制中1的个数为0负数n的二进制是它的补码,其二进制的值恰好与-n-1(非负数)对应的二进制值相反(指0对1,1对0),所以求得-n-1的二...
2019-04-05 10:54:12
186
原创 剑指offer(七) 斐波那契数列
斐波那契数列题目描述思路题解题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39思路思路很简单,分为递归和迭代两种,在递归和迭代的区别与对比中有详细对比与介绍。题解递归解法:public class Solution { public int Fibonacci(int n) { ...
2019-04-04 20:31:34
234
原创 说说MySQL索引
说说MySQL索引导语MySQL索引是什么导语最近刚开始学习MySQL,对于如何建立和使用索引有了初步的了解,但是对于索引的具体实现原理还不太了解。于是借此篇记录自己的学习过程。以下主要从MySQL索引的介绍、如何使用、实现原理以及优缺点四个方面来阐述。MySQL索引是什么...
2019-04-03 23:50:08
387
原创 剑指offer(三) 从尾到头打印链表
从尾到头打印链表 - 链表题目描述思路题解反思思路扩展题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。思路将链表中的数据依次读出并插入到ArrayList下标为0的位置,即可得到反转后的链表。题解/*** public class ListNode {* int val;* ListNode next = null;...
2019-04-03 16:37:48
237
原创 剑指offer(二) 替换空格
public class Solution { public String replaceSpace(StringBuffer str) { int i=0,index=str.indexOf(" ",0); int len = str.length(); StringBuffer sb = new StringBuffer(); ...
2019-03-29 15:43:06
194
原创 剑指offer(一) 二维数组中的查找
【剑指offer 1】二维数组中的查找题目描述思路题解反思思路扩展题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路该二维数组是按照每行从左往右自增、每列从上到下递增的顺序排列的。所以可以考虑先从第一行开始遍历每一行的第一个元素,并...
2019-03-28 21:27:48
206
原创 Java的MySQL连接
导语这次是首次学习Java连接数据库,也做一下学习记录。过程记得下载驱动包,官网下载地址,记得要找与自己的数据库版本所对应的jar包。(备注:由于版本不一致导致的问题已在【报错解决】Java连接数据库时由于版本不同遇到的问题(SQLException)中解决。)导入jar包:右键项目 --> Build Path --> Configure Build Path -...
2019-03-28 16:59:34
213
原创 【报错解决】Java连接数据库时由于版本不同遇到的问题(SQLException)
导语在尝试使用Java连接数据库时,我遇到了一些问题。原因是我最初找到的参考代码所依赖的是mysql-connector-5.1.39-bin.jar包,但我的数据库版本是mysql8.0.15,所以遇到了很多问题。1、依赖包和数据库版本不匹配报错如下:java.sql.SQLException: Unknown system variable 'query_cache_size'需...
2019-03-28 16:41:25
1560
1
原创 [Java基础] 0x03 try/catch捕获异常及多重捕获块
try/catch捕获异常及多重捕获块导语try/catch多重捕获块finally关键字结束语导语昨天做了一道题,关于try/catch语句,题目是这样的: try{ method(A); }catch (IOException e1){ system.out.println("caught IOException!"); }catch (Exception e2){ sy...
2019-03-28 12:33:40
1255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人