自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 国内4G频段划分

国内4G频段划分https://www.cnblogs.com/detu/p/4510411.html

2019-09-30 14:18:33 1263

转载 【转载】40个Java多线程问题总结

【转载】40个Java多线程问题总结前言个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回...

2018-11-19 22:22:56 337

原创 《程序员代码面试指南》根据后序数组重建搜索二叉树——java实现

根据后序数组重建搜索二叉树题目描述:给定一个整型数组arr,已知其中没有重复值,判断arr是否可能是节点值类型为整型的搜索二叉树后序遍历的结果。进阶:如果整型数组arr中没有重复值,且已知是一棵搜索二叉树的后 序遍历结果,通过数组arr重构二叉树。题目难度:easy题目思路:题目一:已知给定一个无重复元素的数组,判断数组是否是二叉树后序遍历的结果。1、已知后序遍历的顺序为左右中...

2018-11-07 22:34:52 700

原创 《程序员代码面试指南》调整[0,x)区间上的数出现的概率——java实现

调整[0,x)区间上的数出现的概率题目描述:假设函数Math.random()等概率随机返回一个在[0,1)范围上的数,那么我们知道,在[0,x)区间上的数出现的概率为x (0<x≤1)。给定一个大于0的整数k,并且可以使用 Math.random()函数,请实现一个函数依然返回在[0,1)范围上的数,但是在[0,x)区间上的数出现的概率为x的k次方(0<x≤1)。题目难度:...

2018-11-02 22:05:14 408

原创 《程序员代码面试指南》斐波那契问题——java实现

斐波那契系列问题题目描述:给定整数N,返回斐波那契数列的第N项。题目难度: easy题目思路:斐波那契数列:又称黄金分割数列,以兔子繁殖为例而引出,故又称为“兔子数列”,指的是这样一个数列:1、2、2、3、5、8、13、21、24…,在数学上,斐波那契数列以如下被以递归的方式定义:F(0) = 0F(1) = 1;F(n) = F(n-1) + F(n-2)(n>=2)(...

2018-10-30 16:54:11 579 1

原创 《程序员代码面试指南》跳跃游戏——java实现

跳跃游戏题目描述:给定数组arr,arr[i]==k代表可以从位置i向右跳1~k个距离。比如,arr[2]==3,代表从位置2可以跳到位置3、位置4或位置5。如果从位置0出发,返回最少跳几次能跳到arr最后的位置上。【举例】arr=[3,2,3,1,1,4]。arr[0]==3,选择跳到位置2;arr[2]==3,可以跳到最后的位置。所以返回2。【要求】如果arr长度为N,要...

2018-10-29 21:15:02 477

原创 《程序员代码面试指南》将整数字符串转成整数值——java实现

将整数字符串转成整数值 题目描述:给定一个字符串str,如果str符合日常书写的整数形式,并且属于32位整数的范围,返回str所代表的整数值,否则返回0。【举例】str=“123”,返回123。str=“023”,因为"023"不符合日常的书写习惯,所以返回0。str=“A13”,返回0。str=“0”,返回0。str=“2147483647”,返回2147483647。str...

2018-10-29 16:25:18 301

原创 《程序员代码面试指南》二叉树的序列化和反序列化——java实现

二叉树的序列化和反序列化题目描述:二叉树被记录成文件的过程叫作二叉树的序列化,通过文件内容重建原来二叉树的过程叫作二叉树的反序列化。给定一棵二叉树的头节点head,并已知二叉树节点值的类型为32位整型。请设计一种二叉树序列化和反序列化的方案,并用代码实现。【要求】1,实现先序遍历序列化与反序列化2,实现按层遍历序列化与反序列化题目难度: medium题目思路:1、先序遍历序列...

2018-10-27 13:18:11 528

原创 《程序员代码面试指南》有序数组生成平衡搜索二叉树——java实现

有序数组生成平衡搜索二叉树题目描述:给定一个有序数组sortArr,已知其中没有重复值,用这个有序数组生成一棵平衡搜索二叉树,并且该搜索二叉树中序遍历的结果与sortArr一致。题目难度:medium题目思路:先找到有序数组的中间值,即为二叉树对应的头结点,递归找到该二叉树的左子树和右子树。代码实现:public static Node generateBST(int[] sort...

2018-10-25 21:51:27 390

原创 《程序员代码面试指南》二叉搜索树转为双向链表——java实现

二叉搜索树转为双向链表题目描述:把一棵搜索二叉树,转化成有序的双向链表。题目难度:medium题目思路:思路一:将二叉树转为双向链表,其中指针对应关系为:二叉树的左右指针分别对应双向链表的前后指针。采用递归的方式分别返回遍历结果的左子树和右子树的头节点。知道左子树的头结点后,则找到头结点的尾节点。最后分别连上左子树的尾节点,head,右子树的头结点。代码实现:/** ...

2018-10-25 12:23:16 621

原创 《程序员代码面试指南》字符串拼接为回文串问题——java实现

字符串拼接为回文串问题题目描述:链表words中都是不同的词,如果其中str1加str2之后是回文串,则str1的位置和str2的位置我们需要收集。比如words = [“bat”, “tab”, “cat”]返回[[0, 1], [1, 0]]words = [“abcd”, “dcba”, “lls”, “s”, “sssll”]返回[[0, 1], [1, 0], [3, ...

2018-10-23 17:12:52 992

原创 《程序员代码面试指南》容器储水问题——java实现

容器储水问题题目描述:给定一个数组代表一个容器,比如[3,1,2,4],代表0位置是一个宽度为1,高度为3的直方图。代表1位置是一个宽度为1,高度为1的直方图。代表2位置是一个宽度为1,高度为2的直方图。代表3位置是一个宽度为1,高度为4的直方图。所有直方图的底部都在一条水平线上,且紧靠着。把这个图想象成一个容器,这个容器可以装3格的水。给定一个没有负数的数组arr,返回能装几...

2018-09-22 16:45:04 1019

原创 《程序员代码面试指南》数组窗口问题——java实现

子数组中最大值最小值不大于给定值问题题目描述:给定数组arr和整数num,返回有多个子数组满足如下情况:max(arr[i…j]) - min(arr[i…j]) <= nummax(arr[i…j])表子数组arr[i…j]中的最大值,min(arr[i…j])表子数组arr[i…j] 中的最小值。题目难度:medium题目思路:思路一:本题可以采用暴力遍历去求解。即遍历...

2018-09-20 10:33:49 309

转载 MySQL性能优化的21条最佳经验【转】

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序 员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的 SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1. 为查...

2018-09-18 17:01:57 228

原创 【LeetCode】21. Merge Two Sorted Lists——java实现

21. 合并两个有序链表题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入: 1->2->4, 1->3->4输出: 1->1->2->3->4->4题目难度:easy题目思路:1、找到两个链表中最小的头节点head。2、让cur1节点为小的头节点,cur2节...

2018-09-18 16:27:02 250

原创 《程序员代码面试指南》对变形词字符串分组——java实现

对变形词字符串分组题目描述:如果str1和str2包含的字符种类一样,并且每种字符的个数也 一样,那么str1和str2算作变形词。给定一个字符类型的数组,请把变形词分组。比如 输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [ [“ate”, “eat”,“tea”], [“nat”,“tan”], [“bat”] ]注意:所...

2018-09-18 16:02:21 309

原创 《程序员代码面试指南》丑数问题——java实现

丑数问题题目描述:规定1是丑数,其他的数如果只含有2或3或5的因子,那么这个 数也是丑数。比如依次的丑数为:1,2,3,4,5,6,8,9,10,12,15… 求第n个丑数题目难度: easy题目思路:思路一:本题要求出第n个丑数,分为两个步骤:1、找丑数: 丑数是含有2或3或5因子的数,因此即从1开始遍历所有整数,如果该数能被2或3或5整除,且除到最后的结果为1,则该数为丑数...

2018-09-18 11:48:52 210

原创 《程序员代码面试指南》 矩阵最长递增路径问题——java实现

矩阵最长递增路径问题题目描述:给定一个整数矩阵matrix,每个位置你可以向左、右、下、上移动,找到其中最长的递增路径。例如:matrix =[[9,9,4],[6,6,8],[2,1,1]]返回4最长路径是[1, 2, 6, 9].matrix = [[3,4,5],[3,2,6],[2,2,1]]返回4最长路径是[ 2, 4,5, 6]题目难度: me...

2018-09-18 11:09:13 927

原创 【LeetCode】564. Find the Closest Palindrome——java实现

564. 寻找最近的回文数题目描述:给定一个整数 n ,你需要找到与它最近的回文数(不包括自身)。“最近的”定义为两个整数差的绝对值最小。示例 1: 输入: “123” 输出: “121”注意:n 是由字符串表示的正整数,其长度不超过18。如果有多个结果,返回最小的那个。题目难度:hard题目思路:1、要求一个数的回文,首先想到...

2018-09-08 10:36:05 491

原创 《程序员代码面试指南》按照左右半区的方式重新组合单链表——java实现

按照左右半区的方式重新组合单链表题目描述:给定一个链表list, 如果: list = 1 调整之后1。 list = 1->2->3 调整之后1->2->3 list = 1->2->3->4 调整之后1->3->2->4 list = 1->2->3->4->5->6 调

2018-09-07 16:06:54 208

原创 《程序员代码面试指南》单词最短转换路径问题——java实现

单词最短路径问题题目描述:给定两个单词beginWord和endWord,还有一本词典是list类型。 找到所有从beginWord变到endWord的最短转换路径,变动的规则是: 1,一次只能变一个位置的字符 2,每一个转换后的word一定要在list中 3,初始时list中没有beginWord这个词 示例: 输入: beginWord = “hit” ...

2018-09-07 11:01:38 332

原创 《程序员代码面试指南》P351 不重复打印排序数组中相加和为给定值的所有三元组——java实现

不重复打印排序数组中相加和为给定值的所有三元组题目描述:给定排序数组arr和整数k,不重复打印arr中所有相加和为k的不降序三元组。 示例1: 输入: arr = [-8,-4,-3,0,1,2,4,5,8,9],k=10 输出: -4,5,9 -3,4,9 -3,5,8 0,1,9 0,2,8 1,4,5题目思路:其实打印...

2018-09-06 18:01:44 489

原创 《程序员代码面试指南》TwoSum 问题——java实现

TwoSum问题问题描述:题目一:给定一个数组arr,和一个整数aim,请返回哪两个位置的数可以加出aim来。 可以假设每个数组里只有一组答案。示例1: arr = {2, 7, 11, 15},aim= 9 返回{0,1},因为arr[0] + arr[1] = 2 + 7 = 9 题目思路:思路一: 要找出哪两个位置的和等于aim,首先要对数组进...

2018-09-06 17:32:26 382

原创 《程序员代码面试指南》整数是否是回文数——java实现

整数是否是回文数题目描述:给定一个整数,判断该数是否是回文数。题目思路:思路一: 可以先把整数转化为String,再转为char类型,然后依次比较第一位和最后一位。若全部相等,则返回true,否则返回false。 思路二: 直接将整数转为StringBuffer,然后利用reverse()方法反转,比较前后两字符串是否相等。 思路三: 直接利用整数的除法与取余特性,比较相...

2018-09-06 10:22:40 274

原创 《程序员代码面试指南》小和问题和逆序对——java实现

小和问题和逆序对题目描述:小和问题:在随机元素,随机数组大小的数组中,找出左边比右边元素小的所有元素之和。 示例1: 数组[4,2,5,1,7,3,6] 第一个元素4比2大,不算小和,5比4和2都大,那就是4+2=6;1比4和2和5都小,不算小和;7比前面的都大,那就是上次小和6+4+2+5+1=18;然后3前面比2和1大,那就是18+2+1=21;最后6比4、2、5、1、3都大...

2018-09-05 21:06:37 258

原创 《程序员代码面试指南》打印一个字符串的全部排列——java实现

打印字符串全排列题目1问题描述:对于不含重复元素的字符串,本题要求输入一个字符串,输出该字符串的全排列。示例1: 输入:abc 输出:abc acb bac bca cba cab题目思路:本题要求字符串全排列的问题...

2018-09-03 11:36:37 603

原创 【LeetCode】236. Lowest Common Ancestor of a Binary Tree——java实现

236. 二叉树的最近公共祖先题目描述:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]...

2018-09-02 20:44:55 449

原创 《基础算法之排序》:7、桶排序——java实现

7、桶排序题目思路:桶排序的基本思路是: 第一步:先获取数组中的最大和最小值,来得到桶的个数; 第二步:然后遍历数组,将数组中的值插入到桶中,数组的值为桶的index;此桶的值0为这表示该位置没有值,为1则表示有一个值,为n的时候表示有多个值; 第三步:重新遍历桶,如果当前index对应的值不为0,则表示有值,放到arr数组中。算法复杂度:时间复杂度和空间复杂度都是非...

2018-08-30 14:44:17 185

原创 《基础算法之排序》: 6、归并排序——java实现

6、归并排序题目思路:归并排序的核心思想是利用归并算法,采用分治的策略:所谓分(归)就是将大问题采用递归的方式分成若干个小的子问题,所谓治(并)就是将小的问题逐一求解,求解之后弹出递归栈,并对父问题求解,最后并到一起。 排序复杂度:时间复杂度:o(nlogn) 空间复杂度:o(n)算法稳定性:由于采用分治思想,在遍历的过程中,若两位置值相等,会根据相应指针移动,然后存入...

2018-08-30 10:07:17 184

原创 《基础算法之排序》: 5、快速排序——java实现

5、快速排序题目思路:其实快排的思想很简单,一共两个步骤: 第一个步骤就是将首位看成分割或者轴点,让小于该位置的数放到左边,大于该位置的数放到右边。 第二个步骤就是一旦第一个步骤完成,就在此基础上再分别将左边和右边递归做第一步的处理,直到每一个位置上的都实现小的在左大的在右。排序复杂度:时间复杂度:o(n^2) 空间复杂度:o(1)排序稳定性:由于left和right...

2018-08-28 22:58:20 155

原创 《基础算法之排序》: 4、堆排序——java实现

4、堆排序题目思路:对于堆排序,首先要了解堆的概念,堆分为大顶堆和小顶堆。顾名思义,大顶堆的堆顶元素为整个堆的最大值;小顶堆的堆顶元素为整个堆的最小值。 对于本题的堆排序,采用的是大顶堆。堆排序主要分为两部分,建堆和调整堆。 建堆的过程就是遍历要排序的数组中的每一个元素,然后依次放入大顶堆,并比较大小,找到每个元素的位置,大顶堆构建完毕后,此时堆顶为最大值。 调整堆的过程就是,将堆顶...

2018-08-28 15:37:09 164

原创 《基础算法之排序》: 3、选择排序——java实现

3、选择排序题目思路:选择排序与冒泡排序类似:冒泡排序是将最大的值依次冒泡到最后面,选择排序是将最小的值依次交换到最前面。选择排序就是选择最小值! 1、第一步:对于第一个位置,即从第一个位置开始,找到后面的最小值,与第一个位置的值交换; 2、第二步:对于第二个位置,即从第二个位置开始,找到后面的最小值,与第二个位置交换; 3、第三步:接下来依次进行,找到后面的最小值,...

2018-08-26 17:37:31 224

原创 《基础算法之排序》: 2、插入排序——java实现

2、插入排序题目思路:所谓插入排序,就是遍历到当前位置时,将该位置的数插入到之前的有序数组里,使得加入该位置后依然是有序的数组。 example:初始数组[3, 1, 2, 4] 1、第一步,将index=1位置的数插入到前面,使得index为0、1的位置有序; 2、第二步,如果arr[1] <= arr[0]则需要交换该位置与前一个位置的元素,即将当前元素插入到...

2018-08-26 16:41:45 149

原创 《基础算法之排序》: 1、冒泡排序——java实现

1、冒泡排序题目思路:所谓冒泡排序,就是将较大的泡(数)不断往上冒,所以一次循环结束能够将最大的数冒泡到最后面位置,接下来的循环就是不断将最大的数冒泡到上次排好序的位置。冒泡排序的时间复杂度为o(n^2)排序稳定性:由于冒泡排序需要比较当前位与后一位的大小,当两个位置数值相等时,不会发生位置的交换,故冒泡排序具有稳定性。 public static int[] bubb...

2018-08-26 15:45:39 296

原创 《程序员代码面试指南》P8:如何仅用递归函数和栈操作逆序一个栈

如何仅用递归函数和栈操作逆序一个栈题目描述:一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1.将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数实现,不能用其他数据结构。题目难度:medium题目分析:本题是要用递归栈的思想将一个栈中元素逆序。代码实现: public static in...

2018-08-24 11:01:19 214

原创 【leetcode】849. Maximize Distance to Closest Person——java实现

849. 到最近的人的最大距离题目描述:在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。至少有一个空座位,且至少有一人坐在座位上。亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。返回他到离他最近的人的最大距离。示例 1: 输入:[1,0,0,0,1,0,1] 输出: 2 解释: 如果亚历克斯坐在第...

2018-08-12 21:34:21 571

原创 【LeetCode】852. Peak Index in a Mountain Array——java实现

852. 山脉数组的峰顶索引题目描述:我们把符合下列属性的数组 A 称作山脉:A.length >= 3 存在 0 < i < A.length - 1 使得A[0] < A[1] < … A[i-1] < A[i] > A[i+1] > … > A[A.length - 1] 3 给定一个确定为山脉的数组,返回任何满足 A[...

2018-08-12 11:47:10 235

原创 【LeetCode】859. Buddy Strings——java实现

859. 亲密字符串题目描述:给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。示例 1: 输入: A = “ab”, B = “ba” 输出: true示例 2: 输入: A = “ab”, B = “ab” 输出: false示例 3:...

2018-08-12 11:12:48 450

原创 【LeetCode】860. Lemonade Change——java实现

860. 柠檬水找零题目描述在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 f...

2018-08-11 21:40:06 494

原创 【LeetCode】868. Binary Gap——java实现

868. 二进制间距题目描述给定一个正整数 N,找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。 如果没有两个连续的 1,返回 0 。 示例 1: 输入:22 输出:2 解释: 22 的二进制是 0b10110 。 在 22 的二进制表示中,有三个 1,组成两对连续的 1 。 第一对连续的 1 中,两个 1 之间的距离为 2 。 ...

2018-08-07 20:47:58 364

空空如也

空空如也

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

TA关注的人

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