![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
Mascottttttt
全力以赴,不负韶华。
展开
-
剑指 Offer 55 - I. 二叉树的深度
剑指 Offer 55 - I. 二叉树的深度有关题目题解题目链接:剑指 Offer 55 - I. 二叉树的深度有关题目输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。提示:节点总数 <= 10000题解法一:深度优先搜索(BFS)/** * Definition for a binary tree node. * struct TreeNode { * int val; *原创 2021-12-07 21:07:33 · 58 阅读 · 0 评论 -
剑指 Offer 39. 数组中出现次数超过一半的数字
剑指 Offer 39. 数组中出现次数超过一半的数字有关题目题解题目链接:剑指 Offer 39. 数组中出现次数超过一半的数字有关题目题解原创 2021-12-05 15:19:21 · 797 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格有关题目题解题目链接:剑指 Offer 05. 替换空格有关题目请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000题解法一:以空间换时间class Solution {public: string replaceSpace(string s) { stri原创 2021-11-03 21:44:45 · 51 阅读 · 0 评论 -
剑指 Offer II 069. 山峰数组的顶部
剑指 Offer II 069. 山峰数组的顶部有关题目题解题目链接:剑指 Offer II 069. 山峰数组的顶部有关题目符合下列属性的数组 arr 称为 山峰数组(山脉数组) :arr.length >= 3存在 i(0 < i < arr.length - 1)使得: ①arr[0] < arr[1] < ... arr[i-1] < arr[i] ②arr[i] > arr[i+1] > ... > arr[arr.length原创 2021-10-14 22:09:19 · 255 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点
链表中倒数第k个节点有关题目题解题目链接:链表中倒数第k个节点有关题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.题解法:顺序查找思路:求出链表长度 n,原创 2021-09-02 18:49:59 · 61 阅读 · 0 评论 -
剑指 Offer 64. 求1+2+…+n
剑指 Offer 64. 求1+2+…+n有关题目题解题目链接:剑指 Offer 64. 求1+2+…+n有关题目求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45限制:1 <= n <= 10000题解方法一:递归逻辑运算符,短路原理代码一://逻辑与int sumNums(原创 2021-08-07 13:23:11 · 93 阅读 · 0 评论 -
剑指 Offer 52. 两个链表的第一个公共节点
剑指 Offer 52. 两个链表的第一个公共节点有关题目题解题目链接:剑指 Offer 52. 两个链表的第一个公共节点有关题目注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。题解方法一:暴力法/** * Definition for singly-linked list. * struct ListNode { * int val;原创 2021-07-22 08:17:06 · 123 阅读 · 0 评论 -
剑指 Offer 42. 连续子数组的最大和
剑指 Offer 42. 连续子数组的最大和有关题目题解题目链接:剑指 Offer 42. 连续子数组的最大和有关题目题解法一:暴力法class Solution{public: int maxSubArray(vector<int> &nums) { //类似寻找最大最小值的题目,初始值一定要定义成理论上的最小最大值 //考察为以第i个元素起始的连续子数组的最大和 int max = INT_MIN;原创 2021-07-17 11:47:07 · 132 阅读 · 2 评论 -
剑指 Offer 29. 顺时针打印矩阵
顺时针打印矩阵有关题目题解题目链接:顺时针打印矩阵有关题目输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 10原创 2021-07-03 11:52:29 · 60 阅读 · 0 评论 -
剑指 Offer 38. 字符串的排列
字符串的排列有关题目题解题目链接:剑指 Offer 38. 字符串的排列有关题目输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]限制:1 <= s 的长度 <= 8题解法一:回溯思路:将这个问题看作有 n 个排列成一行的空位,我们需要从左往右依次填入题目给定的 n 个字符,每个字符只能使用一原创 2021-06-22 08:07:19 · 125 阅读 · 0 评论 -
剑指 Offer 15. 二进制中1的个数
二进制中1的个数有关题目题解题目链接:剑指 Offer 15. 二进制中1的个数有关题目请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。示例 2:输入:0原创 2021-05-29 09:07:26 · 83 阅读 · 0 评论 -
剑指 Offer 40. 最小的k个数
最小的k个数有关题目题解题目链接: 最小的k个数有关题目输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]限制:0 <= k <= arr.length <= 100000 <= arr[i] <原创 2021-05-19 23:44:47 · 82 阅读 · 0 评论 -
剑指 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),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n原创 2021-05-13 22:47:49 · 116 阅读 · 0 评论 -
剑指 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题解1、递归2、记忆化递归法class Sol原创 2021-05-07 23:42:56 · 135 阅读 · 1 评论 -
剑指 Offer 53 - II. 0~n-1中缺失的数字
II. 0~n-1中缺失的数字有关题目题解题目链接:0~n-1中缺失的数字有关题目一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8题解1、有的解法跟这个很像面试题 17.04. 消失的数字2、二分查找参考题解根据题意,数组可以按照以下规则原创 2021-05-01 17:17:19 · 110 阅读 · 0 评论 -
剑指 Offer 56 - II. 数组中数字出现的次数
II数组中数字出现的次数有关题目题解题目链接:II数组中数字出现的次数有关题目在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4示例 2:输入:nums = [9,1,7,9,7,9,7]输出:1限制:1 <= nums.length <= 100001 <= nums[i] < 2^31题解1、统计二级制位数int singleNu原创 2021-04-26 22:23:50 · 132 阅读 · 0 评论 -
剑指 Offer 56 - I. 数组中数字出现的次数
I.数组中数字出现的次数有关题目题解题目链接:I.数组中数字出现的次数有关题目一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]限制:2 <= nums.length <= 1000原创 2021-04-25 22:44:37 · 107 阅读 · 0 评论 -
剑指Offer53-Ⅰ在排序数组中查找数字
剑指Offer53-Ⅰ在排序数组中查找数字有关题目题解题目链接:Ⅰ在排序数组中查找数字有关题目统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0限制:0 <= 数组长度 <= 50000题解1、暴力求解int search(int* nums, int numsSize, int ta原创 2021-04-21 17:31:03 · 79 阅读 · 0 评论 -
剑指Offer03.数组中重复的数字
数组中重复的数字有关题目题解题目链接:数组中重复的数字有关题目找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限制:2 <= n <= 100000题解1.冒泡排序(注:这超过了时空限制)void My_Bubble (int原创 2021-04-15 22:19:02 · 89 阅读 · 0 评论