
剑指offer
WayJasy
叁肆伍叁,伍肆伍物
展开
-
最大正方形 leetcode221
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4思路:1、暴力O(n2∗m2)O(n^2*m^2)O(n2∗m2)就不说了2、动态规划dp[i][j]dp[i][j]dp[i][j]表示从(0,0)(0,0)(0,0)开始到(i,j)(i,j)(i...原创 2020-05-04 17:03:15 · 157 阅读 · 0 评论 -
剑指offer 67题 10 链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。思路遍历链表存到list中,然后使用Collections集合工具类翻转取值,注意判断一些边界条件/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}...原创 2020-04-26 23:44:28 · 100 阅读 · 0 评论 -
剑指offer 67题 9 矩形覆盖
牛客题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路很容易想到:21只有一种方法。22有两种方法。那 2 * 3, 2 * 4, 2 * n 呢?2*3的摆放方法可以看成:(2 * 2的摆放数,最后再摆一块) + (2 * 1的摆放数,最后再摆两块)那么我们设dp[n]dp[n]dp[n]表...原创 2020-04-23 10:22:44 · 97 阅读 · 0 评论 -
剑指offer 67题 8 变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路《跳台阶》那题是一次只能跳1级或2级,这题是一次可以跳任意级。思路和前一题一样dp[n]dp[n]dp[n]表示跳到nnn级的方案数dp[n]=dp[n−1]+dp[n−2]+.....+dp[1]+1dp[n] = dp[n-1]+dp[n-2]+.....+dp...原创 2020-04-23 09:40:21 · 92 阅读 · 0 评论 -
剑指offer 67题 7 跳台阶
牛客题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路设跳n级台阶的方案数为 dp[n]dp[n]dp[n]由于青蛙一次可以跳上1级或2级,那么:dp[n]=dp[n−1]+dp[n−2]dp[n] = dp[n-1] + dp[n-2]dp[n]=dp[n−1]+dp[n−2]dp[n]dp[n]dp[...原创 2020-04-21 23:20:16 · 143 阅读 · 0 评论 -
剑指offer 67题 6 斐波那契数列
<牛客> 斐波那契数列题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项为1)。n<=39思路没思路,直接迭代。public class Solution { public int Fibonacci(int n) { int a = 0,b = 1; int c ...原创 2020-04-21 10:16:16 · 166 阅读 · 0 评论 -
剑指offer 67题 6 旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路这题有一个时间复杂度更小的做法:二分旋转后的数组一定是前半部分非严格递增的,后半部分也是非严格递增,且...原创 2020-04-21 10:09:12 · 105 阅读 · 0 评论 -
剑指offer 67题 5 用两个栈实现队列
《牛客》用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路明白栈是FILO(先入后出)的数据结构,队列是FIFO(先入先出)的数据结构。stack1先入的元素需要它先出,那么就需要将它的元素存入另一个栈stack2,这样最先入的元素就变成了stack2的栈顶,那么就可以先出了,实现了队列的操作。import java.uti...原创 2020-04-21 09:51:11 · 97 阅读 · 0 评论 -
剑指offer 67题 4 重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路这题要稍微找下规律。首先根据前序序列,可以很容易知道,根节点一定是序列的第一个元素那么就可以找到中序序列中根节点的位置。知道了中序序列根节点...原创 2020-04-20 21:28:50 · 97 阅读 · 0 评论 -
剑指offer 67题 3 从尾到头打印链表
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。思路遍历链表的同时将值插入ArrayList中然后使用Collections集合类的reverse方法进行翻转/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int...原创 2020-04-20 20:09:11 · 102 阅读 · 0 评论 -
剑指offer 67题 2 替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路replace()replace()replace() 方法或者 直接暴力遍历题外话网址中如果有空格等特殊字符,解析过程中会把这些字符替换成类似%20这样的字符串,保证计算机能识别。public class Sol...原创 2020-04-20 14:11:58 · 101 阅读 · 0 评论 -
剑指offer 67题 1 二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路一: N2N^2N2暴力,不谈思路二: 由于行从上到下递增,列从左往右递增,那么我们可以从最右上角的数字开始比较。如果当前array[x][y]<targetarray[x][y] <...原创 2020-04-20 09:48:49 · 99 阅读 · 0 评论