剑指Offer
文章平均质量分 67
韩观
这个作者很懒,什么都没留下…
展开
-
滑动窗口类型总结
滑动窗口类型题目总结1. 滑动窗口应用场景子数组子串问题:条件单调性场景,窗口扩大使得满足题目条件的概率增加,窗口减小必然使得题目条件概率减小。第二点是关键,如果不满足,则无法使用滑动窗口方法来解决题目。2. 基本框架这里采用的框架是labuladong的滑动窗口框架,原因是简单好用,用的熟悉。int left = 0; int right = 0; // 左右边界while (right < s.size()) { // 滑动窗口的范围是[left, right),原创 2021-04-06 23:01:08 · 351 阅读 · 0 评论 -
快速排序总结
快速排序1. 写在之前快速排序还有不会的?虽然快速排序的想法深入各个程序员的心中,但在面试高压情况下,想要一次流畅正确地写出快排或者用到快排的题目并非容易的事情,经常会出现一些这样那样的小bug,给面试官留下不好的映象。本文将解决:快速排序的一般框架两种划分方法以及可能出错的点循环不变量验证2. 快排框架快速排序的框架非常简单,与归并排序一样,是分治法的体现,思路为:假设为升序排序,快排将数组划分为两个部分,左边的部分小于某数,后边的部分大于某数,然后在再对数组的左右两部分各自再进行原创 2021-02-24 23:12:18 · 228 阅读 · 0 评论 -
LeetCode 375 猜数字大小 II
猜数字大小II1. 题目我们正在玩一个猜数游戏,游戏规则如下:我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字。每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了。然而,当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。直到你猜到我选的数字,你才算赢得了这个游戏。示例:n = 10, 我选择了8.第一轮: 你猜我选择的数字是5,我会告诉你,我的数字更大一些,然后你需要支付5块。第二轮: 你猜是7,我告诉你,我的数字更大一些,你支付7块。第三轮: 你猜是9,.原创 2020-08-30 00:12:14 · 154 阅读 · 0 评论 -
剑指 Offer 46. 把数字翻译成字符串
剑指 Offer 46. 把数字翻译成字符串1. 题目leetcode上的题目给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”2. 分析这一题是一个数字序列的原创 2020-08-23 10:13:45 · 151 阅读 · 0 评论 -
LeetCode面试题 08.11. 硬币
1.题目硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)。示例1:输入: n = 5输出:2解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2:输入: n = 10输出:4解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+1+110=1+1+1+1+1+1+1+1+1+12. 分析这题写成数学的形式为:现有方程n=25×a+1原创 2020-08-21 08:36:26 · 256 阅读 · 0 评论 -
《剑指offer》面试题47:礼物的最大价值
礼物的最大价值1. 题目在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入: [ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物2. 分析这道题目来看,相当于最长路径,移动的方向只能够是向下和向原创 2020-08-19 12:46:04 · 227 阅读 · 0 评论 -
《剑指offer》面试题42:连续子数组的最大和 动态规划专辑
1. 题目输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。2. 分析...原创 2020-08-18 23:28:05 · 171 阅读 · 0 评论 -
《剑指offer》第14题:剪绳子与动态规划
剪绳子题目:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。分析数学上,我们可以把这个问题建模为一个问题,其应该满足以下条件:将长为n绳子划分为a段n=∑i=0nai n = \sum_{i=0}^na_in=i=0∑nai原创 2020-08-17 21:44:50 · 120 阅读 · 0 评论 -
《剑指Offer》—— 第10题:斐波那契数列
斐波那契数列与剪绳子题目来源于《剑指Offer》的第10,14题,都可以用动态规划的思路来解决问题。斐波那契数列斐波那契数列是数学中非常有名的数列,在中国也可以叫杨辉三角。其递推公式简单明了:f(n)=f(n−1)+f(n−2)(n>1且n∈N+)f(n) = f(n-1) + f(n-2) (n>1且 n\in N^+) f(n)=f(n−1)+f(n−2)(n>1且n∈N+)f(n)={0n=01n=1f(n−1)+f(n−2)n>1且n∈N+f(n)= \l原创 2020-08-17 20:20:57 · 115 阅读 · 0 评论 -
《剑指Offer》题目分类总结目录
最近在科研闲暇时间把《剑指Offer》刷了一遍,这里把所有题目按照内容专题进行汇总,方便以后总结和整理方法和思路。分类不是固定的,可能会随着题目的理解不断修改,争取把有一些难度的题目全部进行博文整理。1.数据结构1.1 树与二叉树面试题7:重建二叉树面试题8:二叉树的下一个节点面试题26:树的子结构面试题27:二叉树的镜像面试题28:对称的二叉树面试题29:顺时针打印矩阵面试题32:从上到下打印二叉树面试题33:二叉搜索树的后序遍历序列面试题34:二叉树中和为某一值的路径面试题36原创 2020-08-10 12:27:57 · 1058 阅读 · 0 评论