自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Shelby Lee的博客

临渊羡鱼,不如退而结网

  • 博客(83)
  • 收藏
  • 关注

原创 Linux-文件权限

Linux的一些基础命令和简单Shell脚本的编写是工程师们必备的能力~LinuxLinux分区工作中遇到了需要将Linux分区并挂载的情况,因为上学时少有Linux使用的经验,因此关于Linux的基础知识还是要好好学习一下。因为只是会涉及部分常见命令,所以我就在在线Linux环境中练习,推荐一个在线Linux环境的网页:copy.sh...

2018-10-14 12:04:53 254

原创 坚持写博客果然很难呐

坚持写博客果然很难呐首先,先庆祝一下,CSDN终于改的稍微好看了些 orz今儿个晚上纠结了好久,要不要再重新好好搭个博客,纠结完成 => 还是在CSDN上写吧,暂时没有激情搭,搭好说,坚持维护博客,坚持写博客,好难,嘤嘤嘤一会儿又要喝中药了,最近日子好苦。。但还要坚持下去,周末有空,好好更一下博。...

2018-10-09 20:32:55 231

原创 剑指Offer-51. 数组中的逆序对

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述: 题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数据...

2018-07-23 22:29:49 236

原创 剑指Offer-50. 第一个只出现一次的字符

题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).思路public class Solution { public int FirstNotRepeatingChar(String str) { int[] count = new i...

2018-07-23 22:29:03 352

原创 剑指Offer-32. 整数中1出现的次数(从1到n整数中1出现的次数)

题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。思路[方法一] 用 % 和 / 求出 1 的个数public class Soluti...

2018-07-08 21:25:36 214

原创 剑指Offer-28. 字符串的排列

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。思路递归注意,要求的是按字典序输出,并且输入字符串可能存在重复的字符,如输入为 “aa”,则输出只能有一个 “...

2018-07-08 17:16:29 160

原创 剑指Offer-30. 最小的K个数

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路用堆排序,O(nlogk)import java.util.*;public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(in...

2018-07-08 17:14:54 161

原创 剑指Offer-62. 序列化二叉树

题目描述请实现两个函数,分别用来序列化和反序列化二叉树思路采用前序遍历TreeNode -> String,用 # 表示空格,用 ! 表示一个结点的结束String -> TreeNode/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode r...

2018-07-08 09:35:47 132

原创 剑指Offer-63. 二叉搜索树的第k个结点

题目描述给定一颗二叉搜索树,请找出其中的第k小的结点。思路中序遍历/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; ...

2018-07-08 09:35:17 136

原创 剑指Offer-39. 平衡二叉树

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路[方法一] 递归import java.util.*;public class Solution { // 递归 public boolean IsBalanced_Solution(TreeNode root) { if (root == null) return true; ...

2018-07-08 09:34:50 129

原创 剑指Offer-39.二叉树的深度

题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路递归/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(i...

2018-07-05 19:42:53 169

原创 剑指Offer-46.求1+2+3+...+n

题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路最直接的想法就是递归计算,但是因为题目限制,递归的终止条件就不太好找了比较聪明的一个做法是可以用短路运算(&&)来终止递归!public class Solution { public int Su...

2018-07-05 19:42:16 184

原创 剑指Offer-47.不用加减乘除做加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路不能用加减乘除,那说明只能用位运算了两个二进制数字相加,第一步先不考虑进位,直接相加,这一步相当于做异或1 + 0 -> 10 + 1 -> 10 + 0 -> 01 + 1 -> 0第二步计算进位,相当于做按位与运算后再向左移一位,能进位的只有 ...

2018-07-05 19:41:38 138

原创 剑指Offer-7. 重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * public class TreeNode { * int val; ...

2018-07-05 19:40:09 125

原创 剑指Offer-39.数组中出现次数超过一半的数字

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路[方法一] 暴力,O(nlogn)import java.util.*;public class Solution { public int...

2018-06-21 14:35:17 111

原创 剑指Offer-32.从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路二叉树层次遍历,用队列实现import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/**public class TreeNode { int val = 0; TreeNode lef...

2018-06-21 14:34:42 125

原创 剑指Offer-31.栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路用一个辅助栈import java.util.ArrayList;...

2018-06-21 14:34:03 109

原创 剑指Offer-30. 包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。思路用两个栈实现。一个主栈,一个辅助栈,每次添加元素时始终将当前最小的元素放到辅助栈里。也就是说,除了第一次,每次 push 进辅助栈的都是要 push 的元素和当前辅助栈 peek 出的元素的最小值。import java.util.Stack;public class Soluti...

2018-06-21 14:33:29 128

原创 剑指Offer-29. 顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路需要考虑好边界条件,以及四种需要打印的情况import java.util.ArrayL...

2018-06-21 14:32:55 166

原创 剑指Offer-27. 二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。思路首先要观察镜像的规律,然后抽象成二叉树的先序遍历/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { ...

2018-06-21 14:32:13 124

原创 剑指Offer-26. 树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路需要注意在第二步判断时,递归是否有 结束条件,以及多处判断一个 指针是否为 null。此题第二步判断的递归结束条件是:root2 已经遍历完了,则说明存在子结构;或者 root1 已经遍历完了,则说明不存在子结构。/**public class TreeNode {...

2018-06-21 14:31:31 113

原创 剑指Offer-22.链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。思路[方法一]找倒数第 k 个,就是找正数第 n - k + 1 个,需要遍历两遍链表。需要注意此题 k 可能超过 len/*public class ListNode { int val; ListNode next = null; ListNode(int val) { ...

2018-06-21 14:30:08 106

原创 剑指Offer-21. 调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。思路双指针,但是不稳定import java.util.Arrays;class Test { public void reOrderArray(int [] array) { int n = array.len...

2018-06-21 14:29:22 111

原创 剑指Offer-16. 数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路想出来解法不难,难的是考虑全面,exponent 的正负零,base 的零,0^0,以及怎样高效的计算 power。计算 power 的方式:a^n = a^(n/2) * a^(n/2),n 为偶数a^((n-1)/2) * a^((n-1)/...

2018-06-21 14:25:37 125

原创 关于 static final method 的疑惑

前言在声明一个方法为 static final 时,IDEA 给出了一个 warning: When a static method is overriden in a subclass it can still be accessed via the superclass making the final declaration not very necessary. Declari...

2018-06-08 23:07:01 3049 1

原创 并发基础

前言Concurrency Foundation1. Synchronized2. Atomic Access3. Guarded blocks4. Immutable ObjectsHigh Level Concurrency Objects1. Lock Objects2. Executors2.1 Executor Interfacesexecutecall...

2018-06-06 08:59:11 224

原创 Java 容器学习笔记 github 链接

把对容器的学习笔记放到 github 里了,还在更新~ 目前不打算抽出来作为文章写,感觉挖的还不够深,等对某些东西理解的更深了再写文章吧 Java 容器后面还会对并发、和一些 Java 基础的东西做整理 为啥要做那么多笔记呢?个人比较喜欢把东西写出来~嘻嘻如果真的有人认真看了的话,要是有错误或者对我写的感到迷惑的地方,再或者希望对哪些知识再深入了解一些,请尽管说出来,给我的个人博客留...

2018-05-31 17:28:42 173

原创 排序算法总结

内部排序基于比较的排序。1. 插入排序直接插入排序基本思想:将元素插入到已经排好序的序列中。第一个元素已经是有序序列,然后比较外围的元素和序列的最后一个元素,判断是否需要插入,如果小,则插入。时间复杂度:最优 O(n) 最差 O(n^2) 是否稳定:是 public void insertSort(int[] arr) {...

2018-05-29 10:39:27 108

原创 翻转字符串的相关题目

翻转字符串的相关题目一、LeetCode: 557. Reverse Words in a String III 二、LeetCode: 541. Reverse String II 三、LeetCode: 344. Reverse String 四、LeetCode: 345. Reverse Vowels of a String 五、LeetCode: 11. Container ...

2018-05-20 20:04:15 223 2

原创 查找算法之二分查找法

查找算法之二分查找法思想二分查找法的思想非常简单,对于一个有序数列,找它中间的元素,看是否是查找目标,如果不是,就看这个查找目标是小于还是大于中间元素,然后在对应的区间内重复上述过程。算法需要注意几个问题:while 循环:while 循环的条件应该是 left < right 还是 left <= right 呢? 这可以从我们设置的左右边界判断出来,我...

2018-05-16 11:08:52 147

原创 关于 Java 中的强制类型转换

问题描述遇到一个题目: 经过强制类型转换以后,变量a,b的值分别为多少? short a = 128; byte b = (byte) a; a = ?, b = ?答案是:a = 128, b = -128这涉及到 Java primitive type 的 conversion,打算借此稍稍研究一下。分析过程下面分析中会涉及到一些与题目无关的...

2018-05-14 21:19:33 1130

原创 算法复杂度分析

设计一个算法,一定要考虑到它的复杂度(空间、时间),那么,接下来,我们一步步来学习怎样分析一个算法的复杂度。一、数据规模首先,我们要清楚设计这个算法是要处理什么规模的数据的,根据处理的数据的规模,从而设计出适合的算法。通常,如果要想在 1s 之内解决问题:O(n^2) 的算法可处理约 10^4 级别的数据O(n) 的算法可处理约 10^8 级别的数据O(nlogn) 的算...

2018-04-27 22:41:44 998

原创 Mybatis generator 使用方法

为什么要使用 Mybatis generator?因为在使用 Mybatis 时需要书写大量的 Mapping 文件,而手动书写容易出错,因为配置它的 XML 文件是一个很繁琐的事情,所以 Mybatis 后来开发出了一个较简易的工具来帮助生成 Dao、Model、Mapping 等相关文件,我们自然要使用啦使用方法:下载相关 jar:MyBatis Generator Release...

2018-04-22 08:59:02 656

原创 Google Guava 的 Multimap 的使用

项目中使用到了这个类,在这里简单记录一下com.google.common.collect 这个包里封装了很多集合类,比如 Multimap,那么这个类和 Map 有什么区别呢?Guava 文档 Multimap (Guava: Google Core Libraries for Java 22.0 API) A collection that maps keys to value...

2018-04-21 22:13:29 1088

原创 一个时间复杂度问题

问题:有一个字符串数组,将数组中的每一个字符串按照字母序排序;之后再将整个字符串数组按照字典序排序。整个操作的时间复杂度是多少?分析:假设最长的字符串长度为 s (为什么要假设最长字符串呢?因为通常求的时间复杂度是上界,所以我们假象这个字符串数组中所有字符串的长度都是最长的 s ,这样计算得出来的时间复杂度就是上界,包含了最坏的情况);数组中有 n 个字符串我们将计算分为两部分...

2018-04-20 22:17:49 510

原创 关于 try 和 finally 中的 return

关于 try 和 finally 中的 return首先我们来看一段代码:public class Test { public static int inc() { int x = 1; try { return ++x; // 1* } catch (Exception e) { }...

2018-04-19 09:30:32 283

原创 Windows下使用curl访问url掉参数的问题

Windows下使用curl时,出现一个问题,就是使用curl访问url掉参数的问题,现已找到解决方案,需要记录一下。问题:在浏览器中直接在url后带参数传参是没有问题的http://localhost:8080/test/validate.json?id=1&msg=2但是用curl访问时curl http://localhost:8080/test/...

2018-04-17 11:06:28 2340

原创 浅谈 KMP 算法

面试官夺命三连KMP 是啥?KMP 能干啥?手写 KMP ? 在计算机科学中,Knuth-Morris-Pratt字符串查找算法(简称为KMP算法)可在一个主文本字符串S内查找一个词W的出现位置。此算法通过运用对这个词在不匹配时本身就包含足够的信息来确定下一个匹配将在哪里开始的发现,从而避免重新检查先前匹配的字符。 这个算法是由高德纳(Donald Ervin Knuth)和...

2018-04-17 09:02:40 372

原创 剑指Offer-42. 连续子数组的最大和

题目描述输入一个整型数组,数组里有正也有负数。数组中的一个或多个连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。思路只要前面算的和为负数,就放弃这个结果但是剑指offer这个题,以及牛客上这个题给的测试用例应该是都没包含全负的情况的,这个需要注意一下,这种方法对于全负的输入得不到最大子序列和。或者是如果题意所说的子序列/子数组包括0,要是这样...

2018-04-11 09:29:30 123

原创 剑指Offer-25. 合并两个排序的链表

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路要注意处理空链表,保证代码的鲁棒性想清楚合并的过程,依次比较两个链表的头结点,把小的放前面。/*public class ListNode { int val; ListNode next = null; ListNode(int val...

2018-04-11 09:28:59 132

空空如也

空空如也

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

TA关注的人

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