自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学习记录分享

此博客为记录学习资料,用于个人复习和知识分享

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

原创 【剑指offer】统计有一个数字在排序数组中出现的次数

题目要求统计有一个数字在排序数组中出现的次数。核心思想除了暴力求解以外,可以进行改进,利用二分法来做。完整代码如下/** * 统计有一个数字在排序数组中出现的次数 * @author mac * 采用二分法 */public class Solution { public int GetNumberCount(int [] array, int k) { int left...

2019-01-09 22:34:38 289

原创 【剑指offer】栈的压入,弹出序列

题目要求栈的压入,弹出序列输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)核心思想巧妙利用push,pop方法。完整代码如下i...

2019-01-09 22:32:49 191

原创 【leetcode】最大子序和

题目要求题目:最大子序和给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入:vector % nums:给定的整数数组nums;输出:int:最大子序和;输入:[-2,1,-3,4,-1,2,1,-5,4]输出:6核心思想利用两种思路。分治算法。普通的递归思想。联合算法。关键点如下for(int i = 0; i &...

2019-01-09 22:27:44 173

原创 【leetcode】根据身高重建队列

题目要求根据身高重建队列假设有打乱顺序的一群人战成一个队列,每个人由一个整数对(h,k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。编写一个算法来重建这个队列。(总人数少于1100人)核心思路二维数组,利用ArrayList来进行遍历。完整代码如下import java.util.ArrayList;import java.util.Arrays;...

2019-01-09 22:21:58 3403

原创 【剑指offer】包含min函数的栈,可以返回栈中的最小元素

题目要求包含min函数的栈定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。核心思想栈的特性是先进后出,而不能从任意位置出栈,因此一个栈无法实现。只能通过建立辅助栈来实现。用辅助栈来存储栈的最小元素。用于返回最小元素。完整代码如下import java.util.Stack;/** * * 包含min函数的栈 * 定...

2018-12-23 13:37:41 185

原创 【剑指offer】顺时针打印矩阵

题目要求顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出一个数字,例如,如果输入如下4*4矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10核心思想遍历矩阵,逐个添加。注意:矩阵的行和列的长度通过如下方法得到int rows ...

2018-12-23 12:43:18 199

原创 【剑指offer】给定一个二叉树,将其变换为源二叉树的镜像

题目要求给定一个二叉树,将其变换为源二叉树的镜像。核心思想递归思想,分治调用。完整代码如下public class Solution { public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.val = val; } } public...

2018-12-23 00:09:51 451

原创 【剑指offer】树的子结构

题目要求树的子结构输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)核心思想递归思想。完整代码如下/** * 树的子结构 * 输入两棵二叉树A,B,判断B是不是A的子结构。 * (ps:我们约定空树不是任意一个树的子结构) * */public class Solution { public class TreeNode {...

2018-12-21 19:03:37 134 1

原创 【剑指offer】合并链表。

题目要求合并两个排序的列表输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。核心思想类似C的方法,定义p指针,遍历并合并。完整代码如下/** * * 合并两个排序的列表 * 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 */public class Solution { pub...

2018-12-21 18:41:48 258

原创 【剑指offer】反转链表

题目要求反转链表输入一个链表,反转链表后,输出新链表表头核心思想类似于C,定义指针进行反转操作。完整代码如下/** * 反转链表 * 输入一个链表,反转链表后,输出新链表表头 * */public class Solution { public class ListNode { int val; ListNode next = null; ListNode(...

2018-12-21 18:19:30 119

原创 【leetcode】二叉树的最大深度。

题目要求二叉树最大深度给定一个二叉树,找出其最大深度二叉树的深度为根节点到最远叶子节点的最长路径上的节点数说明:叶子节点是指没有子节点的节点示例:给定二叉树:[3,9,20,null,null,15,7]返回它的最大深度 3。核心思想递归思想。完整代码如下/** * 二叉树最大深度 * 给定一个二叉树,找出其最大深度 * 二叉树的深度为根节点到最远叶子节点的最长路径...

2018-12-21 17:41:39 155

原创 【leetcode】二叉树的锯齿形层次遍历

题目要求二叉树的锯齿形层次遍历这个程序没写出来,摘抄了九章算法的代码,方便复习整理。https://www.jiuzhang.com/solutions/binary-tree-zigzag-level-order-traversal/核心思想利用stack的办法解决。也可以用普通层次遍历的方法倒序输出。完整代码如下import java.util.ArrayList;import...

2018-12-21 17:25:54 318

原创 【leetcode】二叉树的遍历。

题目要求二叉树的遍历。核心思想利用队列的特性来实现二叉树的遍历。完整代码如下import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;/** * 二叉树的遍历 * */public class Solution { clas...

2018-12-21 16:36:41 107

原创 【剑指offer】调整数组顺序使奇数位于偶数前面

题目要求调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分, 所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。核心思想通过遍历,两两交换(类似于冒泡排序),将奇数偶数位置进行调整。复杂度较高。创建新的两个数组,分别存储奇数和偶数,最后将两个数组进行合并。== 如果没有保证相对位置不变...

2018-12-21 00:47:08 111

原创 【剑指offer】给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

题目要求给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。核心思想两个要点:<< : 左移运算符,num << 1,相当于num乘以2>> : 右移运算符,num >> 1,相当于num除以2>>> : 无符...

2018-12-18 22:45:42 554

原创 【leetcode】反转字符串中的单词III

题目要求给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序示例1:输入:“Let’s take LeetCode contest”输出:“s’teL ekat edoCteeL tsetnoc”注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。核心思想将字符串以“ ”分隔,将每个单词进行反转,再进行整合。完整代码如下...

2018-12-18 20:56:55 244

原创 【剑指offer】输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示。

题目要求输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。核心思路如果一个整数不为0,那么这个整数至少有一位是1,如果把这个整数减1,那么原来整数最右边的1就会变为0,原来在1右边的所有0都会变为1。那么,利用n = n & (n - 1),如1100 & 1011 = 1000,也就是说,把整数减1,再和原数进行与运算,就会消去一个1。利用这个特性我们就可以...

2018-12-18 20:13:43 357

原创 【leetcode】字符串中的第一个唯一的字符

题目要求给定一个字符串,找到它的第一个不重复的字符,并返回它的索引,如果不存在,则返回-1;案例:s = “leetcode”返回 0.s = “loveleetcode”返回 2.注意事项:可以假定该字符串只包含小写字母核心思想很简单的思路,就是用字符串来遍历查找。这个在做的过程有一个小错误,就是没有定义int[26]的数组,这样在验证字符串类似"aaabba"时就会产生返...

2018-12-18 19:10:51 248

原创 【leetcode】查找和替换模式

题目要求如果有一个单词列表words,和一个模式pattern如果存在字母的排列p,使得将模式中的每个字母x替换为p(x)之后,我们就得到了所需单词,那么单词与模式是匹配的。返回words中与给定模式匹配的单词列表。示例:输入:words=[“abc”,“deq”,“mee”,“aqq”,“dkd”,“ccc”],pattern = “abb”输出:[“mee”,“aqq”]核心...

2018-12-18 17:25:58 427

原创 【程序员面试经典】确定两串乱序同构。

程序员面试经典题目要求给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串中的空格。给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。核心思想方法1.先排序,后一一对比。方法2.用ASCII码值进行对比完整代...

2018-11-29 22:06:24 143

原创 【Leetcode】反转字符串里的单词

Leetcode题目要求给定一个字符串,逐个翻转字符串中的每个单词。示例:输入:“the sky is blue”输出:“blue is sky the”说明:无空格字符构成一个单词输入字符串可以在前面或后面包含多余的空格,但是翻转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。核心思想将字符串拆分,然后从后往前遍历。这里有一个坑,就是如...

2018-11-29 12:56:55 738 1

原创 【Leetcode】验证回文字符串。

Leetcode题目要求给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写说明:本题中,我们将空字符串定义为有效的回文串;示例1.输入: “A man,a plan,a canal:Panama”输出:true示例2.输入:“race a car”输出:false核心思想1.先将字符串变为小写,因为本题忽略了字母的大小写。2.利用字符的ASC...

2018-11-28 11:59:20 325

原创 【剑指offer】用两个栈实现队列的入队出队操作

剑指offer题目要求用两个栈来实现一个队列,完成队列的Push(入栈)和Pop(出栈)操作。队列中的元素为int类型补充栈的特性:先进后出(LIFO, Last In First Out),类似于水桶。队列的特性:先进先出(FIFO, FIFO In First Out),类似于水管。核心思想利用两个栈,一个用于入队,一个用于出队,入队时,直接放入栈1,出队时,由栈1倒到栈2,再...

2018-11-27 10:21:52 905

原创 【Leetcode】删除数组中的重复项

Leetcode题目要求给定一个排序数组,你需要在原地删除重复出现的元素,使每个元素最多出现两次,返回移除后数组的新长度不要使用额外的数组空间,你必须在原地修改输入数组并在O(1)额外空间的条件下完成示例1.给定 nums = [1,1,1,2,2,3]函数应该返回新长度length = 5,并且原数组的前五个元素被修改为1,1,2,2,3你不需要考虑数组中超出新长度后面的元素示...

2018-11-27 10:14:45 765

原创 【剑指offer】查找旋转数组的最小值

剑指offer题目要求把一个数组最开始的若干个元素搬到数组的末尾,我们称为数组的旋转。输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。例如 数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。核心思想设置mid坐标,利用旋转数组特性,不断缩小范围,找到end所指的最小元素位置。完整代码...

2018-11-27 10:10:30 199

原创 【数据结构与算法】回溯法解决装载问题

回溯法解决装载问题(约束函数优化)解题思想遍历各元素,若cw+w[t]<=c(即船可以装下),则进入左子树,w[t]标记为1,再进行递归,若cw+r>bestw(即当前节点的右子树包含最优解的可能),则进入右子树,否则,则不遍历右子树。完整代码实现如下public class Loading { static int n;//货箱数目 static int[] w;//货箱...

2018-11-25 20:20:59 3044

原创 【数据结构与算法】回溯法解决N皇后问题,java代码实现

N皇后问题问题描述在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法,这称为八皇后问题。延伸一下,便为N皇后问题。核心思想解决N皇后问题有两个关键点。一是如何进行放置棋子,二是如何验证棋子是否符合要求。因此,我们利用回溯法建立函数。 private static void NQueen(LinkedList<...

2018-11-25 18:14:46 1132

原创 【Leetcode】移除元素

Leetcode题目要求给定一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改数组并在O(1)额外空间的条件下完成,元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例1.给定 nums = [3,2,2,3] ,val = 3则函数应该返回新的长度为2,并且nums中的前两个元素均为2不...

2018-11-25 17:05:00 115

原创 【数据结构与算法】贪心算法解决背包问题。java代码实现

背包问题(贪心算法)贪心算法思想简单的说,就是将大问题转化为最优子问题,例如本题所要求的,背包容量有限,要想使物品的总价值最高,那么,我们必须尽可能的选择权重高的(即单位价值更高)的物品进行装载。在背包问题中,物品是可拆的,即可以分成任意部分进行装载,而最终实现的目标是,背包是满的(即剩余容量为0),且总价值尽可能高。这也就是背包问题与0-1背包的根本差别所在。解题思想先将所有物品的权...

2018-11-25 15:59:39 3179 2

原创 【剑指offer】请实现一个函数,将一个字符串中的每个空格替换

剑指offer题目如下请实现一个函数,将一个字符串中的每个空格替换成"%20"。例如,当字符串为We Are Happy,则经过替换后的字符串为 We%20Are%20Happy。具体的代码实现如下1.遍历实现public class Solution { /** * 替换空格 * 问题描述:请实现一个函数,将一个字符串中的每个空格替换成"%20"。...

2018-11-25 14:02:54 188

原创 【Leetcode】实现strStr()函数。

Leecode题目如下实现strStr()函数要求:给定一个haystack字符串和一个needle字符串,在haystack字符串中找出needle字符串出现的第一个位置(从0开始)。如果不存在,则返回-1示例1.输入:haystack = “hello”, needle = “ll”输出:2示例2.输入:haystack = “aaaaa”, needle = “bba”输...

2018-11-25 00:16:52 332

原创 【剑指offer】输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

剑指offer第三题题目如下输入一个链表,按链表值从尾到头的顺序返回一个ArrayList具体代码实现如下:下面展示两种代码实现,思想都是基于递归,遍历到链表末尾,由低向上保存数据。1.相互调用递归import java.util.ArrayList;public class Solution { /** * public class ListNode { * int v...

2018-11-24 23:43:38 990

原创 【Hadoop】MapReduce深度分析

MapReduce深度分析MapReduce总结构分析数据流向分析处理过程分析各阶段分析MapTaskRead阶段Map阶段Collector和Partitioner阶段Spill阶段Merge阶段ReduceTaskshuffle阶段Merge阶段Sort阶段Reduce阶段MapReduce总结构分析数据流向分析1)从HDFS到Mpper节点输入文件。2)Mapper输出到内存...

2018-11-01 21:52:08 600

原创 【Hadoop】yarn的资源调度

yarn的资源调度yarn的资源调度前言三种主要调度器调度策略对比yarn的资源调度前言Hadoop作为分布式计算平台,从集群计算的角度分析,Hadoop可以将底层的计算资源整合后统一分配到集群中的计算节点,从而达到分布式和并行计算的目的,最终完成任务的高效执行。这一核心功能就是作业调度要做的事情。在调度机制中涉及三个核心问题:1.计算资源的组织。2.用户作业的选择策略。3.任务的...

2018-11-01 20:32:28 202

原创 【Hadoop】MapReduce并行计算框架

MapReduce并行计算框架基本知识前言核心概念计算模型系统架构作业配置计算流程与机制作业提交和初始化MapperReducer结构图示输入/输出格式(常用)核心问题Map和Reduce数量作业配置作业调度调度过程 :有用的MapReduce特性基本知识前言MapReduce计算框架是Google提出的一种并行计算框架,是Google云计算模型MapReduce的java开源实现,用于...

2018-10-29 23:37:52 4567 1

原创 【Hadoop】HDFS分布式文件系统

HDFS-分布式文件系统基本知识简介HDFS相关概念块(Block)名称节点(NameNode)数据节点(DataNode)第二名称节点(Secondary NameNode)HDFS体系结构HDFS存储原理基本知识简介1. 分布式文件系统是Hadoop两大核心组成部分之一,提供了在廉价服务器集群中进行大规模分布式文件存储的能力。2. HDFS具有很好的容错能力,并且兼容廉价的硬件设备,因...

2018-10-25 23:06:23 2487

空空如也

空空如也

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

TA关注的人

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