自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode(1) 两数之和

题目描述:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9,因为 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1]思路:借助H...

2019-08-25 23:09:16 118

原创 leetcode(173) Binary Search Tree Iterator

Binary Search Tree IteratorImplement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.Callingnext()will return the next smallest number ...

2019-08-05 22:17:38 122

原创 leetcode(56)

题目描述:Given a collection of intervals, merge all overlapping intervals.For example, Given[1,3],[2,6],[8,10],[15,18], return[1,6],[8,10],[15,18].思路:根据区间的起始项先进行排序,然后两两比较,合并区间。代码:import java.util...

2019-08-05 21:24:46 164

原创 华为机试输入问题总结

最近开始做华为笔试模拟,发现每次都要自己写输入函数,之前没有接触,摸不着头脑,而且每道题大家对输入的写法都是五花八门,所以还是自己查资料来进行一下总结。1.java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。创建Scanner对象的基本语法为:import java.util.Scanner;Scanner sc = new ...

2019-07-16 23:46:39 2941

原创 华为机试(3)明明的随机数

题目描述:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。InputP...

2019-07-16 23:29:49 97

原创 剑指offer(61)序列化二叉树

题目描述:请实现两个函数,分别用来序列化和反序列化二叉树思路:采用层次遍历方法层次序列化和反序列化二叉树。节点为空则用#表示,每个节点间用!隔开。反序列化相当于重做层遍历。代码:import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode r...

2019-07-16 22:14:25 83

原创 华为机试(2) 计算字符个数

题目描述:写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。思路:不区分大小写,输入时直接统一换成大写或者小写,然后查找即可。代码:import java.util.*;public class Main{ public static void main(String[] args){ Scann...

2019-07-07 23:48:52 128

原创 华为机试(1) 字符串最后一个单词的长度

题目描述:计算字符串最后一个单词的长度,单词以空格隔开。思路:用空格分割字符串,存放到String类型的数组中,直接返回最后一个元素的长度,注意边界条件以及各方法用法。代码:import java.util.*;public class Main{ public static void main(String[] args){ Scanner input =...

2019-07-07 23:20:29 103

原创 剑指offer(57)二叉树的下一个节点

题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:1. 如果该节点没有父节点,则返回该节点;2.如果该节点有右子树,则返回该右子树的最左边节点;3.如果该节点没有右子树,先看该节点是不是父节点的左孩子,如果是则直接返回父节点,如果不是则继续向上查找,如果发现该节点是父节点的左孩子...

2019-07-03 22:18:42 78

原创 剑指offer(52)正则表达式匹配

题目描述:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。思路:首先判断两个字符串的合法性,str不包含'.'和'*',pattern中第一个字符...

2019-06-17 20:31:10 78

原创 剑指offer(39)平衡二叉树

题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路:树型dp套路。1.以某个节点X为头结点的树中,分析答案有哪几种可能性,并且这种分析是以X的左子树,X的右子树和X整棵树的角度来考虑。可能性1:如果X的左子树不是平衡的,则以X为头结点的树就不是平衡的。可能性2:如果X的右子树不是平衡的,则以X为头结点的树就不是平衡的。可能性3:如果X的左子树和右子树的高度差超过1,则...

2019-05-28 14:44:32 70

原创 剑指offer(29)最小的k个数

题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。思路:1.优先队列。通过重写构造器的方法创建大小为k的大根堆,用于存放最小k个节点,根节点为最小k个节点的最大值。如果当前优先队列值小于k个,则依次插入节点直到k个;如果优先队列存在k个值,则将每个值先与队头节点对比,如果比队头节点小,则队头出列,该节点入队,直...

2019-05-27 10:25:07 68

原创 Latex插入图片并引用

插入图片主要为viso文件和excel图表。两种图片如果直接转pdf的话会有大片空白区域,不利于排版。解决办法:excel图表粘贴到viso中,后面两中图片处理方法相同:点击另存,保存格式为可移植网络图形,即png格式,保存路径为latex文档所在位置,否则无法引用。\documentclass{article}\usepackage{graphicx}//先引入该包\begin{...

2019-05-23 15:34:48 16240 5

原创 latex多行公式显示一个编号

\documentclass[review]{elsarticle}\usepackage{amsmath}\begin{document}\begin{equation} \label{eqn2} \begin{split} n&=\left[\frac{b-a}{0.01}\right]+1, \\ S&=\frac{1}{n}\sum\limits...

2019-05-21 17:00:10 5484

原创 Latex公式自动编号与自动引用

在进行latex引用时,有两种办法:一,被动引用。  如有这样一段代码:  $$  x^2+y^2= z^2.\eqno(1.1)  $$  In this paper, we investigated(1.1)and applied it into some fields.  红色部分为被动引用,其缺点显而易见:如果公式(1.1)的编号修改之后,引用出的编号也得跟...

2019-05-21 16:47:07 9623

原创 剑指offer(28)数组中出现次数超过一半的数字

题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路:1.对数字进行排序,然后找到数组中间的数,如果一个数超过数组的一半,则中间的数必为该数字,从头开始,计算该数字的个数,如果个数超过数组的一半,返回该数字,否则返回0;...

2019-05-20 20:29:43 89

原创 关系型数据库遵循ACID规则(事务的四个特性)

1、A (Atomicity) 原子性原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。...

2019-05-17 09:59:56 396

原创 剑指offer(26)二叉搜索树与双向链表

题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:二叉搜索树中,每个节点都有两个分别指向其左右子树的指针,左子树的节点值总是小于父节点的值,右子树的节点值总是大于父节点的值。在双向链表中,每个节点也有两个指针,它们分别指向前一个节点和后一个节点。在转换成排序双向链表时,原先指向左子节点的指针调整为链表中指向...

2019-05-16 12:02:43 53

原创 剑指offer(25)复制含有随机指针节点的链表

题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路:1.复制节点到原节点后2.根据原节点的random指针添加复制节点的random指针3.拆分链表代码:/*public class Rando...

2019-05-15 16:29:25 114

原创 剑指offer(24)二叉树中和为某一值的路径

题目描述:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)思路:递归思想。首先判断根节点的值是否小于等于target的值,如果是,先将根节点的值放入结果数组中,将target的值减去根节点的值,然后一次判断根节点的左子树和右子树是否为空,然后...

2019-05-15 15:18:43 83

原创 剑指offer(23)二叉搜索树的后序遍历序列

题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:二叉搜索树左子树的值都比根节点的值小,右子树的值都比根节点的值大。二叉搜索树的后序遍历结点最后一个节点为根节点,找到第一个比根节点的值大的数,则从该节点开始到数组的倒数第二个数为止是右子树,从起始位置到该节点前一个位置为左子树,然后递归遍历左...

2019-05-15 11:55:59 59

原创 剑指offer(22)从上往下打印二叉树

题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:借助队列,从头结点开始先入队,然后出队,并且加入返回结果的数组中,如果当前出队列的节点有左孩子,则将左孩子加入到队列;如果当前出队的节点有右孩子,则将右孩子加入到队列,直到加入所有节点。代码:public class TreeNode { int val = 0; TreeNode left = n...

2019-05-15 11:13:18 52

原创 剑指offer(21)栈的压入弹出

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

2019-05-15 10:39:01 73

原创 剑指offer(19)顺时针打印出矩阵的元素

题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.思路:首先将只有一行,只有一列的边界情况列举出来。然后设定左上角的行值startRow和列值startCol,右下角...

2019-05-14 17:21:39 268

原创 剑指offer(20)包含min函数的栈

题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。思路:创建两个栈stack1和stack2,stack2为取得最小值的辅助栈,stack1正常入栈,出栈,取栈顶元素。当stack2为空或者stack2栈顶元素大于等于当前要入栈的元素时,stack2入栈;当stack1出栈时,先判断stack1栈顶元素是否和stack2栈顶元素相同...

2019-05-14 15:51:09 68

原创 剑指offer(18)二叉树镜像

题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5思...

2019-05-14 15:13:54 61

原创 剑指offer(17)树的子结构

题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路描述:从根节点开始,首先找到A中和B值相等的节点,从该节点开始,A随着B的先序遍历也进行先序遍历,如果遇到有一个值不相等,则直接返回false。代码:/**public class TreeNode { int val = 0; TreeNode left = n...

2019-05-14 15:00:29 75

原创 剑指offer(16)单调不减合并两个排序的链表

题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路:首先建立一个头节点head,令cur =head,然后依次判断list1和list2中哪一个节点值更小,小的放入cur后面,直到遍历完其中一个链表,将不为空的链表直接连到结果链表后面,返回head.next。有递归和非递归两种方法。代码1:(非递归版)/*public cl...

2019-05-07 20:43:31 104

原创 剑指offer(15)反转链表

题目描述:输入一个链表,反转链表后,输出新链表的表头。思路:每次拆分一个节点,用next先存放要拆分节点的下一个节点,pre先设为空,使第一个节点head指向的下一个节点为pre,然后pre等于head节点,令head等于next。举例:(1)1->2->3->4next = 2,1->pre(null), pre = 1,head = next = 2,效果为...

2019-05-07 20:02:39 69

原创 剑指offer(14)输出链表的倒数第k个节点

题目描述:输入一个链表,输出该链表中倒数第k个结点。思路:设置快指针和慢指针,快指针先走k - 1步,然后慢指针和快指针一块走,每次走一步,直到快指针到达最后一个节点,慢指针到达倒数第k个节点。代码:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { ...

2019-05-07 17:46:12 81

原创 剑指offer(13)调整数组顺序使奇数位于偶数前面

题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路:1.借助两个动态数组,一个存放奇数,一个存放偶数,然后将两个数组按奇数在前偶数在后合并,放回原数组。2.类似于冒泡排序,偶数和奇数逆序就交换。代码1:import java.util.*;publ...

2019-05-07 17:14:02 71

原创 剑指offer(12)数值的整数次方

题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路:首先把指数都换成正数,然后对指数进行移位运算,指数二进制形式有多少位就进行多少次底数相乘运算,但只有该位不为0时乘到要返回的res中。代码1:public class Solution { public double Power(double base...

2019-05-07 16:20:15 61

原创 剑指offer(11)二进制中1的个数

题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:1.无符号右移,每次判断最后一位是否为1;2.如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。举个例子:一个二进制数1100,从右边数起第三位是处于最右边...

2019-05-07 15:46:18 68

原创 剑指offer(10)矩形覆盖

题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路:总结规律。n = 1时,有1种方法;当n = 2时,有两种方法;当n = 3时,有3种方法;当n = 4时,有5种方法......斐波那契数列。代码:public class Solution { public int RectCov...

2019-05-05 13:23:44 75

原创 剑指offer(9)变态跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:设f(n)为跳上n级台阶总共的跳法当n = 1时,f(1) = 1;当n = 2时,f(2) = 2;当有n - 1个台阶时,共有f(n - 1) = f((n - 1) - 1)+ f((n - 1) - 2) + ... + f((n - 1) -...

2019-05-05 11:44:57 68

原创 剑指offer(8)跳台阶

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路:1.设f(n)为n个台阶的跳法,如果第一次跳一个台阶,剩下有f(n - 1)种跳法;如果第一次跳2个台阶,剩下有f(n - 2)种跳法,并且只有这两种情况,所以一共有f(n - 1) + f(n - 2)种跳法。2.当只有一个台阶时,f(1) = 1;当只...

2019-05-05 10:59:39 66

原创 剑指offer(7)斐波那契数列

题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39。思路:1.简单暴力递归(O(N^2))2.可修改为动态规划。(O(N))3.利用二阶递推矩阵(O(logN))代码1(递归原版):public class Solution { public int Fibonacci(int n) {...

2019-05-04 12:01:32 76

原创 剑指offer(6)旋转数组的最小数字

问题描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:旋转数组连接处的前一个数肯定大于后一个数,找到该位置并返回下一位数字,注意边界条件。代码:im...

2019-05-04 11:48:53 65

原创 剑指offer(5)用两个栈实现队列

题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:利用两个栈stack1和stack2,入队列操作和入栈操作相同,直接压入stack1中;出队列有所不同,如果stack2为空,则将stack1中现有的元素依次压入stack2中,然后stack2栈顶元素出栈;如果stack2不为空,千万不要将stack1中的元素压入stack2中,会导致顺序错乱...

2019-05-04 11:35:26 70

原创 剑指offer(4)重建二叉树

题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:递归思想。先序遍历第一个节点为根节点,在中序遍历中对应位置将中序遍历分成左右两个子树,找到左右子树的范围,分别构造出左右子树的先序遍历和中序遍历...

2019-05-04 11:05:28 64

空空如也

空空如也

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

TA关注的人

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