
剑指 Offer
遇见你之前.
岁月悠悠,衰微只及肌肤;热忱抛却,颓废必致灵魂
展开
-
剑指 Offer 62. 圆圈中最后剩下的数字 (约瑟夫环)
LeetCode - 剑指 Offer 62. 圆圈中最后剩下的数字题目描述解题分析code总结参考题解 by leetcode- Vancomycin题目描述难度:简单0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n =原创 2022-01-20 14:58:44 · 670 阅读 · 0 评论 -
剑指 Offer 59 - I. 滑动窗口的最大值 (Java解题 单调队列)
LeetCode - 剑指 Offer 59 - I. 滑动窗口的最大值题目描述题解分析解题代码总结题目描述难度:困难给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3原创 2021-10-20 18:48:42 · 287 阅读 · 0 评论 -
剑指 Offer II 044. 二叉树每层的最大值 ( Java解题 - 层序遍历 )
LeetCode - 剑指 Offer II 044. 二叉树每层的最大值题目描述题解分析解题代码总结题目描述难度:中等给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。示例1:输入: root = [1,3,2,5,3,null,9]输出: [1,3,9]解释: 1 / \ 3 2 / \ \ 5 3 9 示例2:输入: root = [1,2,3]输出: [1,3原创 2021-10-14 15:35:07 · 466 阅读 · 0 评论 -
剑指 Offer 13. 机器人的运动范围
LeetCode - 剑指 Offer 13. 机器人的运动范围题目描述分析代码总结题目描述难度:中等地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少原创 2021-09-29 19:06:52 · 77 阅读 · 0 评论 -
剑指 Offer 47. 礼物的最大价值
LeetCode - 剑指 Offer 47. 礼物的最大价值题目描述分析代码总结题目描述难度:中等在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入: [ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值原创 2021-09-26 18:54:45 · 196 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
LeetCode - 剑指 Offer 10- II. 青蛙跳台阶问题题目描述分析总结题目描述难度:简单一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100分析仔细分析就会原创 2021-09-22 16:30:17 · 105 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
LeetCode - 剑指 Offer 11. 旋转数组的最小数字题目描述分析总结题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0分析读题,一个递增数组旋转,那么可知,原本数组中的第一个元素(最小的元素)跑到了数组原创 2021-09-19 21:52:38 · 149 阅读 · 0 评论 -
剑指 Offer 10- I. 斐波那契数列
LeetCode - 剑指 Offer 10- I. 斐波那契数列题目描述分析总结题目描述难度:简单写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:10000000原创 2021-09-19 21:24:47 · 124 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
LeetCode - 剑指 Offer 06. 从尾到头打印链表题目描述分析总结题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000链表节点代码:class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}分析第一种方式是原创 2021-09-18 23:40:07 · 84 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
LeetCode - 剑指 Offer 09. 用两个栈实现队列题目描述分析总结题目描述难度:简单用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,原创 2021-09-18 23:30:56 · 89 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
LeetCode - 剑指 Offer 05. 替换空格题目描述分析总结题目描述难度:简单请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000分析最开始用的 String 类的 replaceAll 方法,慢的飞起,String 类对象的每一次操作都会创建新的对象,而不会修改原对象;后来换成了遍历字符串 s,利用 Str原创 2021-09-17 23:15:24 · 69 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
LeetCode - 剑指 Offer 04. 二维数组中的查找题目描述分析总结题目描述难度:中等在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14原创 2021-09-17 11:43:55 · 89 阅读 · 0 评论 -
剑指 Offer 03.数组中重复的数字
LeetCode - 剑指 Offer 03.数组中重复的数字题目描述分析总结题目描述难度:简单找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限制:2 <= n <= 100000分析查重题可以使用 set 集合或者哈希表来完成。将原创 2021-09-17 11:19:19 · 85 阅读 · 0 评论