![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
Kasuga96
这个作者很懒,什么都没留下…
展开
-
剑指Offer 59. 滑动窗口的最大值
解法一: 考虑到先在第一个窗口内找到最大值,每次右移窗口时,将新增的那个数与原窗口最大值进行比较,若比上一个窗口的最大值还大,那么毋庸置疑新进的数为本窗口的最大值。否则重新在新窗口内进行比较寻找最大值。(注:此方法在牛客只有14/21用例通过,会报超时) import java.util.*; public class Solution { public ArrayList<Integer> maxInWindows(int [] num, int size) { ..原创 2022-05-21 15:26:09 · 95 阅读 · 0 评论 -
剑指Offer - 反转链表
Nowcoder 题目描述 给定一个单链表的头结点pHead,长度为n,反转该链表后,返回新链表的表头。 数据范围: n≤1000 要求:空间复杂度 O(1) ,时间复杂度 O(n) 。 解题思路 栈方法 利用栈的特性,将链表依次存入栈中。再依次取出建立新的链表。需要注意的点:建立新链表时,最后一个取出的结点就是最开始的头结点,比如原链表是1→2→3,新链表应当是3→2→1,但是取出的1的next仍然指向2,会造成闭环。所以需要将最后一个取出的结点的next赋null。 import ja原创 2022-01-06 01:45:45 · 396 阅读 · 0 评论 -
剑指Offer - 翻转单词序列
思路一 先将原字符串以空格分割,然后建立字符串数组,再借用栈实现翻转 import java.util.Stack; public class Solution { public String ReverseSentence(String str) { Stack<String> stack = new Stack<>(); String[] strArr = str.split(" "); StringBuil...原创 2022-01-06 01:34:20 · 144 阅读 · 0 评论 -
剑指Offer - 栈的压入、弹出序列
思路 首先明确一点,当入栈序列和出栈序列确定时,操作序列也就是唯一确定的。本题可增加一个辅助栈,来模拟整个操作。 以描述为例,入栈序列是1,2,3,4,5;出栈序列是4,5,3,2,1。那么可确定,1,2,3是按序压入栈中的,当压入4时,因为4=出栈序列的第一个数,所以实际操作中4压入之后立刻弹出。 对应辅助栈的操作,首先入栈1,2,3,因为这三个数不等于出栈的第一个数,然后入栈4,此时等于出栈的第一个元素,所以出栈顺序向后移一位,而此时入栈5,等于出栈序列的第二个数,那么5也是压入再弹出。以...原创 2022-01-04 18:30:27 · 175 阅读 · 0 评论 -
剑指Offer - 用两个栈实现队列
思路 依然是分为入队栈和出队栈,遵循两个原则:1. 入队栈转入出队栈时,保证出队栈为空 2. 转移后,保证入队栈为空。若要pop时发现出队栈不为空,不需转移,直接pop即可,否则会破坏顺序。 import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack&..原创 2022-01-04 17:10:07 · 1369 阅读 · 0 评论 -
剑指Offer - 从尾到头打印链表
Nowcoder 题目描述 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。 解题思路 用一个栈存储链表,出栈即为逆序结果。 /** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import .原创 2021-12-23 19:31:43 · 224 阅读 · 0 评论 -
剑指Offer - 替换空格
Nowcoder 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解题思路 创建一个新字符串,将老字符串一次赋值加入新字符串,遇到空格则赋值%20。 public class Solution { public String replaceSpace(StringBuffer str) { int i = 0; StringBuffer st原创 2021-12-23 17:09:31 · 159 阅读 · 0 评论 -
剑指Offer - 二维数组中的查找
Nowcoder 题目描述 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 [ [1,2,8,9], [2,4,9,12], [4,7,10,13], [6,8,11,15] ] 给定 target= 7,返回true。 给定target=3,返回false。 数据范围:矩阵的长宽满足 0≤n,m≤500 , 矩阵中的值...原创 2021-12-23 16:37:01 · 553 阅读 · 0 评论 -
剑指Offer - 数组中重复的数字
Nowcoder 题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中第一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 返回描述: 如果数组中有重复的数字,函数返回true,否则返回false。 如果数组中有重复的数字,把重复的数字放到参数duplication[0]中。(ps:duplication已经初始化,可以直接赋值使原创 2021-12-23 16:28:20 · 75 阅读 · 0 评论