![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题
_Nanfeng
人生只有900个月,趁年轻,在自己的世界里做自己的英雄。
展开
-
【剑指offer】连续子数组的最大和
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会...原创 2019-07-24 12:39:13 · 123 阅读 · 0 评论 -
【剑指offer】求二叉树中和为某一值的路径
题目: 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 思路: 要打印出所有从根节点到叶子节点并且符合条件的路径,很明显,这是一个深度优先遍历,我们可以采用先序遍历的方法遍历这棵二叉树。 具体的处理逻辑是,每遍历一条路径,如果节点之和恰好等于给...原创 2019-08-22 11:02:52 · 187 阅读 · 0 评论 -
【剑指offer】二叉搜索树的后序遍历序列
题目: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路: 首先,我们需要知道二叉搜索树的特点,即所有左子树的节点值都小于根节点的值,所有右子树的节点值都大于根节点,并且左右子树也满足这一特点。 而后序遍历有一个特点,就是,先遍历左子树,再遍历右子树,最后遍历根节点,并且数组中最后一个元素的值就是根节点...原创 2019-08-21 21:13:06 · 124 阅读 · 0 评论 -
【剑指offer】数组中出现次数超过一半的数字
题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路: 方法一: 定义一个Map集合,key存储数组中出现的数字,value是数字出现的次数。 遍历这个数组,如果当前Map集合为空,直接将第一个数字放入集合,出现次数为1,如果当...原创 2019-08-26 00:26:01 · 159 阅读 · 0 评论 -
【剑指offer】从上往下打印二叉树
题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路: 这道题需要借助队列来实现,队列具有先进先出的特点,先将这棵树的根节点放入队列,只要队列不为空,从队列中出掉最早进入的一个节点,判断这个节点的左子树是不是空,不为空的话入队列,再接着去判断右子树是否为空,不为空再入队列,将出掉的这个节点的值放入一个提前准备好的存储遍历结果的list中,重复前面这些打印步骤,直到队列为空。 画图来...原创 2019-08-20 21:37:55 · 155 阅读 · 0 评论 -
【剑指offer】请找出旋转数组中最小数字
题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路: 方法一: 由于这是一个非递减排序的旋转数组,所以如果当前元素大于它的下一个元素,那就说明下一个元素就是最...原创 2019-08-15 10:39:55 · 118 阅读 · 0 评论 -
【剑指offer】栈的压入、弹出序列
题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 思路: 定义一个新的栈stack,遍历给定的“压入栈”,把“压入栈”中的元素依次放入新栈...原创 2019-08-20 00:53:00 · 166 阅读 · 0 评论 -
【剑指offer】顺时针打印矩阵
题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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. 思路: 这道题就相当于不停地收缩边界,定义四个变量,up,down,left,right,分别代表上下左右边界。 1...原创 2019-08-19 17:44:15 · 145 阅读 · 0 评论 -
【剑指offer】矩形覆盖
题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 思路:原创 2019-07-22 23:16:51 · 104 阅读 · 0 评论 -
【剑指offer】青蛙跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法? 思路: 1)如果只有一级台阶,那么就只有一种跳法。 2)如果有两级台阶,那么就有两种跳法,即一次跳一级,跳两次,或者一次跳两级,跳一次。 3)如果台阶数n大于2,那么我们可以将n级台阶的跳法看成一个函数f(n),第一次跳有两种不同的选择,如果第一次跳一级,此时跳法的数目等于后面(n-1)级台阶的...原创 2019-07-21 09:10:51 · 121 阅读 · 0 评论 -
【剑指offer】斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 斐波那契数列定义: F(n) = F(n-1) + F(n-2) (n>=2) ,其中F(1) = 1,F(2) = 1 方法一:递归 最常用的就是递归算法,比较简单,直接看代码: private static int fibobacci(int n){ ...原创 2019-07-21 08:07:29 · 212 阅读 · 0 评论 -
【leetcode】字符串分割
题目:Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words. For example, given s ="leetcode",dict =["leet", "co...原创 2019-07-24 23:53:05 · 1477 阅读 · 0 评论 -
【剑指offer】交换数字位置,使得奇数在前,偶数在后
题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路: 方法一: 最容易想到的办法,定义一个新的数组,再遍历两次原来的数组,第一次遍历找出所有奇数存放在新的数组里,第二次遍历找出所有的偶数存放在新的数组里,最后输出新数组里的内容。直接看代码: public static...原创 2019-08-17 18:02:47 · 476 阅读 · 0 评论