剑指offer
文章平均质量分 90
BGnv5
这个作者很懒,什么都没留下…
展开
-
剑指offer(1~5)
二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路分析: 从二维数组的右上角开始查找,设置一个i,j表示所找当前位置,如果说array[i][j]>target的话,接着就往左边找,反之往下找。 为什么从右上角或者左下...原创 2020-03-19 22:48:49 · 119 阅读 · 0 评论 -
剑指offer(56~60)
删除链表中的重复结点 题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路分析: 首先添加一个头节点,以方便碰到第一个,第二个节点就相同的情况 设置 pre ,last 指针,pre指针指向当前确定不重复的那个节...原创 2020-03-15 02:35:32 · 123 阅读 · 0 评论 -
剑指offer(51~55)
构建乘积数组 题目描述: 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];) 思路分析: 用两个数组分别存放0 ~ i-1 项...原创 2020-03-14 00:50:35 · 127 阅读 · 0 评论 -
剑指offer(46~50)
孩子们的游戏(圆圈中最后剩下的数) 题目描述: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...原创 2020-03-13 01:16:54 · 121 阅读 · 0 评论 -
剑指offer(41~45)
和为S的连续正数序列 题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述: 输出所有...原创 2020-03-11 22:09:42 · 76 阅读 · 0 评论 -
剑指offer(36~40)
两个链表的第一个公共结点 题目描述: 输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 解题思路: 设 A 的长度为 a + c,B 的长度为 b + c,其中 c 为尾部公共部分长度,可知 a + c + b = b + c + a。 当访问链表 A 的指针访问到链表尾部时,令它从链表 B 的头部重新开始访问链表 ...原创 2020-03-10 22:42:00 · 78 阅读 · 0 评论 -
用两个栈实现队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路: 栈的特点是后进先出,队列的特点是先进先出。 比如,我们依次进行的操作: 入栈(1),入栈(2),入栈(3),出栈,出栈,入栈(4),出栈,出栈 对应输出的结果应该是: 1,2,3 具体步骤如下: 1.把元素1压入到栈1中,--------->栈1{1},栈2{} (从下往上) 2...原创 2019-11-09 16:16:23 · 87 阅读 · 0 评论 -
重构二叉树
重构二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 1.递归法 根据前序遍历序列的第一个节点可以得到该二叉树的根节点, 根据根节点在中序遍历序列中的位置可以把二叉树分为左右两颗子树 再分别对左...原创 2019-11-06 12:26:43 · 153 阅读 · 0 评论 -
从尾到头打印列表
题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 1.使用头插法 定义一个ArrayList,当链表不为空的时候,利用ArrayList里面的add(index,value)方法每次都在ArrayList的头部插入节点 import java.util.ArrayList; public class Solution { public ArrayList<In...原创 2019-11-06 11:02:07 · 80 阅读 · 0 评论 -
替换空格
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 1.直接调用方法 public class Solution { public String replaceSpace(StringBuffer str) { return str.toString().repl...原创 2019-11-05 13:21:34 · 64 阅读 · 0 评论 -
二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 1.暴力破解法 循环遍历数组中的每一个元素 时间复杂度:O(n²) 空间复杂度:O(1) public class Solution { public boolean Find(int t...原创 2019-11-05 12:30:26 · 87 阅读 · 0 评论