剑指Offer
L_Z_
这个作者很懒,什么都没留下…
展开
-
剑指Offer15
34. 二叉树中和为某一值的路径/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr),原创 2022-04-24 15:04:07 · 1039 阅读 · 1 评论 -
剑指Offer14
12. 矩阵中的路径class Solution {public: bool exist(vector<vector<char>>& board, string word) { rows = board.size(); cols = board[0].size(); for(int i = 0; i < rows; i++) { for(int j = 0; j < cols原创 2022-04-24 14:55:35 · 122 阅读 · 0 评论 -
剑指Offer13
21.调整数组顺序使奇数位于偶数前面class Solution {public: vector<int> exchange(vector<int>& nums) { if(nums.empty()){ return nums; } int n = nums.size(); int start = 0; int end = n - 1; wh原创 2022-04-22 11:26:57 · 301 阅读 · 0 评论 -
剑指Offer12
25. 合并两个有序链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {原创 2022-04-21 10:31:53 · 994 阅读 · 0 评论 -
剑指Offer11
18. 删除链表节点/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* deleteNode(ListNode* head, int val) {原创 2022-04-21 10:27:57 · 212 阅读 · 0 评论 -
剑指Offer10
46. 把数字翻译成字符串给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。class Solution {public: int translateNum(int num) { if(num < 0){ return 0; } str原创 2022-04-19 15:27:49 · 101 阅读 · 0 评论 -
剑指Offer09
42. 连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。class Solution {public: int maxSubArray(vector<int>& nums) { if(nums.empty()) { return 0; } int num = 0; int max =原创 2022-04-18 19:14:40 · 163 阅读 · 0 评论 -
剑指Offer08
10(1). 斐波那契数列思路:斐波那契数的边界条件是 F(0)=0和 F(1)=1。当 n>1时,每一项的和都等于前两项的和,因此有如下递推关系:F(n)=F(n-1)+F(n-2)由于斐波那契数存在递推关系,因此可以使用动态规划求解。动态规划的状态转移方程即为上述递推关系,边界条件为 F(0)和F(1)。由于 F(n) 只和F(n−1) 与 F(n-2) 有关,因此可以使用「滚动数组思想」。class Solution {public: int fib(int n)原创 2022-04-17 13:15:18 · 137 阅读 · 0 评论 -
剑指Offer07
26. 树的子结构输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。思路:判断一棵树是否是另一棵树的子结构,注意子结构与子树的区别子结构不能只利用根节点进行对称性递归,需要构造辅助函数,判断当两棵树根节点值相同时一棵树是否为另一棵树子结构/** * Definition for a binary tree node. * struct TreeNode { * int val; *原创 2022-04-17 12:24:25 · 46 阅读 · 0 评论 -
剑指Offer06
32(1). 从上到下打印二叉树从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印思路:题目要求的二叉树的 从上至下 打印(即按层打印),又称为二叉树的 广度优先搜索(BFS)。BFS 通常借助 队列 的先入先出特性来实现。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *原创 2022-04-16 10:31:23 · 112 阅读 · 0 评论 -
剑指Offer05
04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30] ]给定 target =原创 2022-04-14 17:43:01 · 120 阅读 · 0 评论 -
剑指Offer04
03. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入: [2, 3, 1, 0, 2, 5, 3]输出:2 或 3思路:(1)方式一:将输入的数组排序,从头到尾扫描数组(2)方式二:哈希表,从头到尾扫描数组,每扫描一个元素时,判断哈希表里面是否已包含该元素,没有就加到哈希表里面,有就表示找到(3)原创 2022-04-13 17:15:51 · 150 阅读 · 0 评论 -
剑指Offer03
05.替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”class Solution {public: string replaceSpace(string s) { string res; int size = s.size(); for(int i = 0; i < size; i++) {原创 2022-04-12 10:07:07 · 53 阅读 · 0 评论 -
剑指Offer02
06.从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]思路:先遍历的后输出,是种栈的思想,可以构造辅助栈来实现,也可以用递归来实现,每访问一个节点,先递归输出它后面的节点,在输出该节点自身/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *原创 2022-04-11 09:42:44 · 99 阅读 · 0 评论 -
剑指Offer01
09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入: [“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“deleteHead”,“app原创 2022-04-10 11:40:03 · 127 阅读 · 0 评论