【剑指 Offer(专项突击版)】
文章平均质量分 66
【剑指 Offer(专项突击版)】
牧心.
心之所向,素履以往
展开
-
【剑指Offer(专项突击版)】001~059题目题解汇总
文章目录[001 - 剑指 Offer II 001. 整数除法【位运算】](https://leetcode-cn.com/problems/xoh6Oh/)[002 - 剑指 Offer II 002. 二进制加法【模拟、字符串】](https://leetcode-cn.com/problems/JFETK5/)[003 - 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数【位运算、动态规划】](https://leetcode-cn.com/problems/w3tCBm/)[原创 2022-04-30 02:29:18 · 26989 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】057、059刷题笔记【滑动窗口+红黑树】【优先队列】
文章目录[057 - 剑指 Offer II 057. 值和下标之差都在给定的范围内【滑动窗口+红黑树】](https://leetcode-cn.com/problems/7WqeDu/)[059 - 剑指 Offer II 059. 数据流的第 K 大数值【优先队列】](https://leetcode-cn.com/problems/jBjn9C/) 057 - 剑指 Offer II 057. 值和下标之差都在给定的范围内【滑动窗口+红黑树】 用红黑树维护一个大小为k的滑动窗口。 对于每一个元素n原创 2022-03-05 00:57:29 · 362 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】101 - 剑指 Offer II 101. 分割等和子集【0-1背包】【动态规划】
题目链接:https://leetcode-cn.com/problems/NUPfPr/ 这个题的等价问题是:是否能从数组中找到一些元素,使这些元素的和等于数组和的一半。 因此这个问题可以转化为【0-1背包问题】,只不过这里要求选取的物品的重量之和必须恰好等于背包容量。 可以用【动态规划】来求解。 【dp】 用dp[i][j]来表示从数组的 [0,i][0,i][0,i]下标范围内选取若干个正整数(可以是 0 个),是否存在一种选取方案使得被选取的正整数的和等于 jjj。 (1)边界值。 如果不选取任.原创 2022-01-25 00:25:07 · 565 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 056 刷题笔记【二叉树+set】
056 - 剑指 Offer II 056. 二叉搜索树中两个节点之和 在遍历过程中,将每个节点的值都放到一个 set 中。 对于每个值为 p 的节点,在 set 中检查是否存在 k−p。如果存在,那么可以在该树上找到两个节点的和为 k;否则,将 p 放入到 set 中。 如果遍历完整棵树都没有找到一对节点和为 k,那么该树上不存在两个和为 k 的节点。 /** * Definition for a binary tree node. * public class TreeNode { * i原创 2021-12-25 01:10:42 · 280 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 043-047、049、053-054 刷题笔记【二叉树】
文章目录[043 - 剑指 Offer II 043. 往完全二叉树添加节点](https://leetcode-cn.com/problems/NaqhDT/)[044 - 剑指 Offer II 044. 二叉树每层的最大值【层次遍历】](https://leetcode-cn.com/problems/hPov7L/)[045 - 剑指 Offer II 045. 二叉树最底层最左边的值【层次遍历】](https://leetcode-cn.com/problems/LwUNpT/)[046 - 剑指原创 2021-12-25 00:51:18 · 445 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 041 - 042 刷题笔记【队列】
文章目录[041 - 剑指 Offer II 041. 滑动窗口的平均值【队列】](https://leetcode-cn.com/problems/qIsx9U/)[042 - 剑指 Offer II 042. 最近请求次数【队列】](https://leetcode-cn.com/problems/H8086Q/) 041 - 剑指 Offer II 041. 滑动窗口的平均值【队列】 用队列存储数据流,队列最大为size,用来模拟滑动窗口。 class MovingAverage { pri原创 2021-12-25 00:47:42 · 132 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 036 - 038 刷题笔记 【栈】
036 - 剑指 Offer II 036. 后缀表达式【栈】 简单题,没啥可说的。 class Solution { public int evalRPN(String[] tokens) { Deque<Integer> stack = new LinkedList<Integer>(); for (String token : tokens) { if (isNumber(token)) {原创 2021-11-12 00:00:29 · 3392 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 030, 032 - 035 刷题笔记 【哈希】
文章目录[030 - 剑指 Offer II 030. 插入、删除和随机访问都是 O(1) 的容器【哈希】](https://leetcode-cn.com/problems/FortPu/)[032 - 剑指 Offer II 032. 有效的变位词【哈希】](https://leetcode-cn.com/problems/dKk3P7/)[033 - 剑指 Offer II 033. 变位词组【哈希+排序】](https://leetcode-cn.com/problems/sfvd7V/)[034原创 2021-11-11 23:59:26 · 3151 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 刷题笔记【链表】
文章目录[028 - 剑指 Offer II 028. 展平多级双向链表【递归】](https://leetcode-cn.com/problems/Qv1Da2/)[029 - 剑指 Offer II 029. 排序的循环链表](https://leetcode-cn.com/problems/4ueAj6/) 028 - 剑指 Offer II 028. 展平多级双向链表【递归】 /* // Definition for a Node. class Node { public int val;原创 2021-11-11 23:57:16 · 3065 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 024 - 027 刷题笔记【翻转】(简单题)
文章目录[024 - 剑指 Offer II 024. 反转链表【前插法】](https://leetcode-cn.com/problems/UHnkqh/)[025 - 剑指 Offer II 025. 链表中的两数相加【栈】](https://leetcode-cn.com/problems/lMSNwu/)[026 - 剑指 Offer II 026. 重排链表【翻转+合并】](https://leetcode-cn.com/problems/LGjMqU/)[027 - 剑指 Offer II 0原创 2021-11-01 23:45:15 · 3109 阅读 · 1 评论 -
【剑指 Offer(专项突击版)】 021 - 023 刷题笔记【快慢指针、双指针】
文章目录[021 - 剑指 Offer II 021. 删除链表的倒数第 n 个结点【快慢指针】](https://leetcode-cn.com/problems/SLwz0R/)[022 - 剑指 Offer II 022. 链表中环的入口节点【快慢指针】](https://leetcode-cn.com/problems/c32eOV/)[023 - 剑指 Offer II 023. 两个链表的第一个重合节点【双指针】](https://leetcode-cn.com/problems/3u1WK4/原创 2021-11-01 11:07:34 · 3028 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 018 - 020 刷题笔记 回文 【双指针、DP、中心扩展】
文章目录[018 - 剑指 Offer II 018. 有效的回文【双指针】](https://leetcode-cn.com/problems/XltzEq/)[019 - 剑指 Offer II 019. 最多删除一个字符得到回文【贪心+双指针】](https://leetcode-cn.com/problems/RQku0D/)[020 - 剑指 Offer II 020. 回文子字符串的个数【动态规划、中心扩展】](https://leetcode-cn.com/problems/a7VOhD/)方原创 2021-11-01 11:05:14 · 6306 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 014 - 016 刷题笔记【滑动窗口】
014 - 剑指 Offer II 014. 字符串中的变位词【滑动窗口】 由于字符排列不会改变字符串中每个字符的个数,所以只有当两个字符串每个字符的个数相等时,一个字符串才是另一个字符串的排列。 使用两个数组cnt1cnt1cnt1和cnt2cnt2cnt2,分别统计s1s1s1和s2s2s2中各个字符的个数。由于需要遍历的子串长度均为nnn,使用一个固定长度为nnn的滑动窗口来维护cnt2cnt2cnt2:滑动窗口每向右滑动一次,右侧进入的字符计数加一,左侧离开的字符计数减一。每次判断两个数组是否相等。原创 2021-10-30 22:34:56 · 3050 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 010 - 013 刷题笔记【前缀和】
010 - 剑指 Offer II 010. 和为 k 的子数组【前缀和+哈希】 考虑以iii结尾的和为kkk的连续子数组个数时,只要统计有多少个前缀和为pre[i]−kpre[i] - kpre[i]−k的pre[j]pre[j]pre[j]即可。我们建立哈希表<sum,cnt><sum, cnt><sum,cnt>,记录pre[i]pre[i]pre[i]出现的次数。 时间复杂度:O(n)O(n)O(n) 空间复杂度:O(n)O(n)O(n) class Solu原创 2021-10-30 22:33:39 · 3032 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 008 - 009 刷题笔记【滑动窗口】
008 - 剑指 Offer II 008. 和大于等于 target 的最短子数组【滑动窗口】 定义两个指针iii和jjj分别表示子数组(滑动窗口)的开始位置和结束位置,维护变量sumsumsum存储子数组中的元素和。 初始状态下,i=0,j=0,sum=0i = 0, j = 0, sum = 0i=0,j=0,sum=0. 每一轮迭代,将nums[j]nums[j]nums[j]加到sumsumsum,如果sum>=targetsum>=targetsum>=target,更原创 2021-10-30 22:30:14 · 3024 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 005 - 007 刷题笔记【双指针】
005 - 剑指 Offer II 005. 单词长度的最大乘积【掩码+Hash Map】](https://leetcode-cn.com/problems/aseY1I/) 因为字符串只包含小写字母,所以对于判断字符串是否含哪些字母时,很容易想到给字符串开辟一个布尔数组来标识;为了节省空间,我们这里用一个int类型的变量标识(类似于掩码,二进制的一位标识一个字母),这样我们得到了每个字符串相对应的掩码bitmaskbitmaskbitmask。 我们可以设置Hash Map来存储$< bitmas原创 2021-10-30 22:27:20 · 3016 阅读 · 0 评论 -
【剑指 Offer(专项突击版)】 001 - 004 刷题笔记
001 - 剑指 Offer II 001. 整数除法【位运算】 时间复杂度:O(1)O(1)O(1) 空间复杂度:O(1)O(1)O(1) class Solution { // 时间复杂度:O(1) public int divide(int a, int b) { if (a == Integer.MIN_VALUE && b == -1) return Integer.MAX_VALUE; int sign原创 2021-10-30 22:24:25 · 3053 阅读 · 0 评论