offer
剑指 Offer 52. 两个链表的第一个公共节点
题目描述: 解题思路: class Solution{ public ListNode getIntersectionNode(ListNode headA,ListNode headB){ ListNode A = headA,B=headB; while(A!=B){ A=A!=null?A.n ......
归并排序:剑指 Offer 51. 数组中的逆序对
题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 限制: 0 <= 数组长度 <= 50000 合并阶段 本质上是 合并两个排序数组 的过程,而每当遇到 左子数组当前元素 > 右子数组当前元素 时, 意味着 「左 ......
动态规划:剑指 Offer 49. 丑数
题目描述: 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 因此,可设置指针 a,b,c 指向首个丑数(即 1 ),循环根据递推公式得到下个丑数,并每轮将对应指针执行 +1 即可。 class Solution{ public int ......
动态规划:剑指 Offer 46. 把数字翻译成字符串
题目描述: 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。 一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。 提示: 0 <= num < 231 解题思路: 根据 ......
剑指 Offer 31. 栈的压入、弹出序列
题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。 例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序 ......
剑指 Offer 29. 顺时针打印矩阵
题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 限制: 0 <= matrix.length <= 100 0 <= matrix[i].length <= 100 class Solution{ public int[] spiralOrder(int matrix[] ......
代码随想录算法训练营第8天 | ● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer 05.替换空格 ● 151.翻转字符串里的单词 ● 剑指Offer58-II.左旋转字符串 - 第4章 字符串part01
第四章 字符串part01 今日任务 ● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer 05.替换空格 ● 151.翻转字符串里的单词 ● 剑指Offer58-II.左旋转字符串 详细布置 344.反转字符串 建议: 本题是字符串基础题目,就是考察 reverse 函数的实现 ......
剑指 Offer 17. 打印从1到最大的n位数
题目描述: 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 class Solution{ public int[] printNumbers(int n){ int len = (int)Math.pow(10,n) ......
快速幂:剑指 Offer 16. 数值的整数次方
题目描述: 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 解题思路: class Solution{ public double myPow(double x,int n) { if(x==0.0) return 0; long b ......
算法学习day08字符串part01-344、541、offer05、151、offer58
package LeetCode.stringpart01; /** * 344. 反转字符串 * 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 * 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 * 示例: ......
Git--no matching host key type found. Their offer: ssh-rsa
解决方法:在用户目录下的 .ssh文件夹下新建一个 config 文件 Host * HostKeyAlgorithms +ssh-rsa PubKeyAcceptedKeyTypes +ssh-rsa ......
(DFS + 剪枝)剑指 Offer 12. 矩阵中的路径
题目描述: 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。 同一个单元格内的字母不允许被 ......
动态规划:剑指 Offer 10- II. 青蛙跳台阶问题
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 提示: 0 <= n <= 100 复杂度分析: 时间复杂度 O(N) : 计算 f ......
【剑指 Offer】 05. 替换空格
【题目】 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1:输入:s = "We are happy."输出:"We%20are%20happy." 限制:0 <= s 的长度 <= 10000来源:力扣(LeetCode)链接:https://leetcode.cn/prob ......
动态规划:剑指 Offer 10- I. 斐波那契数列
题目描述: 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之 ......
剑指 Offer 04. 二维数组中的查找
题目描述: 在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。 请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 限制: 0 <= n <= 1000 0 <= m <= 1000 复杂度分析: 时 ......
【剑指 Offer】 44. 数字序列中某一位的数字
【题目】 数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。 示例 1:输入:n = 3输出:3示例 2:输入:n = 11输出:0 限制: 0 <= ......
【剑指 Offer】 43. 1~n 整数中 1 出现的次数
【题目】 输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。 示例 1:输入:n = 12输出:5示例 2:输入:n = 13输出:6 限制: 1 <= n < 2^31来源:力扣(LeetCo ......
剑指 Offer II 022. 链表中环的入口节点
题目链接:剑指 Offer II 022. 链表中环的入口节点 方法一:哈希 解题思路 统计走过的节点,当第一次遇到重复的节点时,即为入口节点,否则为 $null$。 代码 class Solution { public: ListNode *detectCycle(ListNode *head) ......
剑指 Offer II 020. 回文子字符串的个数
题目链接:剑指 Offer II 020. 回文子字符串的个数 方法一:动态规划 解题思路 状态表示:$dp[i][j]$ 表示子字符串 $s[i,j]$ 是否为回文串; 状态计算: 若 $s[i]$ != $s[j]$,显然不是; 若 $s[i]$ == $s[j]$,有以下几种可能: $i$ = ......
【剑指 Offer】 14- II. 剪绳子 II
【题目】 给你一根长度为 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、 ......
剑指 Offer II 119. 最长连续序列
分析: 题目意思是数组里面能组合起来最长的连续数组 然后直接sort排序,如果中间差数不是1就不再连续,count归零 当nums[i]和nums[i-1]相等的时候,跳过 代码: 1 class Solution(object): 2 def longestConsecutive(self, nu ......
【剑指 Offer】 60. n个骰子的点数
【题目】 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 示例 1: 输入: 1 输出: [0.16667,0.16667,0.16667 ......
【剑指 Offer】 51. 数组中的逆序对
【题目】 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 示例 1:输入: [7,5,6,4]输出: 5 限制:0 <= 数组长度 <= 50000来源:力扣(LeetCode)链接:https://leetcode.cn ......
【剑指 Offer】17. 打印从1到最大的n位数
【题目】 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]来源:力扣(LeetCode)链接:https://leetcode.cn/proble ......
剑指 Offer II 083. 没有重复元素集合的全排列
分析: 今天看的明日一练,这道题有点忘了怎么做了 先偷个懒,用了个全排列函数,后面再研究 代码: 1 class Solution(object): 2 def permute(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: List[Lis ......
位运算:剑指 Offer 39. 数组中出现次数超过一半的数字
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 限制: 1 <= 数组长度 <= 50000 解题思路: 摩尔投票法: 核心理念为 票数正负抵消 。此方法时间和空间复杂度分别为 O(N) 和 O(1) ,为本题的最 ......
【剑指 Offer】49. 丑数
【题目】 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明: 1 是丑数。 n 不超过1690。来源: ......
【剑指 Offer】 19. 正则表达式匹配
【题目】 请实现一个函数用来匹配包含'. '和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均不匹 ......
排序:剑指 Offer 45. 把数组排成最小的数
题目描述: 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 提示: 0 < nums.length <= 100说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0 注:+ 代表的是 ......