fFee-ops's Blog
剑指 Offer 50. 第一个只出现一次的字符 剑指 Offer 50. 第一个只出现一次的字符
剑指 Offer 50. 第一个只出现一次的字符 解题思路 代码 解题思路两次循环,第一次记录出现数字,第二次找出第一个数字为1的。 代码class Solution { public char firstUniqChar(S
2021-03-07
剑指 Offer 49. 丑数 剑指 Offer 49. 丑数
剑指 Offer 49. 丑数 解题思路 代码 解题思路这题要用动态规划。 丑数只包含因子 2, 3, 5 ,因此有 “丑数 == 某较小丑数× 某因子” (例如:10 = 5*2)。所以我们要得到多大的丑数就要给每一个丑数都求出来它
2021-03-07
剑指 Offer 48. 最长不含重复字符的子字符串 剑指 Offer 48. 最长不含重复字符的子字符串
剑指 Offer 48. 最长不含重复字符的子字符串 解题思路 代码 解题思路套用模板即可,因为只有一个字符串,所以模板还可以简化一下,不需要need和valid。 更新窗口内数据只要更新window内该字符出现的次数就可以了。 还要
2021-03-07
剑指 Offer 47. 礼物的最大价值 剑指 Offer 47. 礼物的最大价值
剑指 Offer 47. 礼物的最大价值 解题思路 代码 解题思路拿现在东西的最大值和前面东西的状态有关,很容易想到动态规划。 dp数组含义: dp[i][j]代表从棋盘的左上角开始,到达单元格 (i,j)下标从0开始!! 时能拿到礼
2021-03-07
剑指 Offer 46. 把数字翻译成字符串 剑指 Offer 46. 把数字翻译成字符串
剑指 Offer 46. 把数字翻译成字符串 解题思路 代码 解题思路典型动态规划题目。首先定义dp数组含义:dp[i] 代表以nums[]中第i位数字为结尾的数字的翻译方案数量。 推导状态转移方程:比如数字6 2 4,手动推出应该有
2021-03-06
剑指 Offer 45. 把数组排成最小的数 剑指 Offer 45. 把数组排成最小的数
剑指 Offer 45. 把数组排成最小的数 解题思路 代码 解题思路此题求拼接起来的最小数字,本质上是一个排序问题。设数组 numsnums 中任意两数字的字符串为 x 和 y ,则规定 排序判断规则 为: 若拼接字符串 x +
2021-03-06
剑指 Offer 44. 数字序列中某一位的数字 剑指 Offer 44. 数字序列中某一位的数字
剑指 Offer 44. 数字序列中某一位的数字 解题思路 代码 解题思路主要思路就三步: 找到n应该在几位数中 找到n所在的那个数字 确定n是数字中的哪一位 具体思路理解:见这篇题解 代码class Solution {
2021-03-06
剑指 Offer 43. 1~n 整数中 1 出现的次数 剑指 Offer 43. 1~n 整数中 1 出现的次数
剑指 Offer 43. 1~n 整数中 1 出现的次数 解题思路 代码 解题思路将 1 ~ n 的个位、十位、百位、…的 1 出现次数相加,即为 1 出现的总次数。某位中 1出现次数的计算方法: 当 cur = 0时: 此位 1
2021-03-06
剑指 Offer 42. 连续子数组的最大和 剑指 Offer 42. 连续子数组的最大和
剑指 Offer 42. 连续子数组的最大和 解题思路 代码 解题思路最基本的动态规划题目,只要找准dp[i]的含义,那就十分简单 代码class Solution { public int maxSubArray(int[]
2021-03-06
剑指 Offer 41. 数据流中的中位数 剑指 Offer 41. 数据流中的中位数
剑指 Offer 41. 数据流中的中位数 解题思路 代码 解题思路这题用小顶堆+大顶堆来做。维护一个小顶堆,用来存放数组中较大的那一部分,维护一大顶堆,用来存放数组中较小的一部分。要始终保持小顶堆的最小值大于等于大顶堆的最大值。也就
2021-03-06
剑指 Offer 40. 最小的k个数 剑指 Offer 40. 最小的k个数
剑指 Offer 40. 最小的k个数 解题思路 代码 解题思路思路一:注意找前 K 大/前 K 小问题不需要对整个数组进行 O(NlogN)O(NlogN) 的排序!例如本题,直接通过快排切分排好第 K 小的数(下标为 K-1),那
2021-03-06
剑指 Offer 39. 数组中出现次数超过一半的数字 剑指 Offer 39. 数组中出现次数超过一半的数字
剑指 Offer 39. 数组中出现次数超过一半的数字 解题思路 代码 解题思路这题有两个方法; 方法一:正常思路可以先排序,再取中间值,中间值就是数组中出现次数超过一半的数字。因为一个元素占数组的一半以上,那肯定能到达中间位置。
2021-03-06
22 / 71