随笔分类 -  《剑指Offer》第二版算法题解集合

摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 class Solution { public: int dx[4] = {0, 1, 0, -1}; int dy[4] = {1, 0, -1, 0}; int x1, x2, y1, y2; bool in (int x, int 阅读全文
posted @ 2022-12-14 22:47 !&&|| 阅读(8) 评论(0) 推荐(0) 编辑
摘要:请实现一个函数,用来判断一棵二叉树是不是对称的。 如果一棵二叉树和它的镜像一样,那么它是对称的。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode 阅读全文
posted @ 2022-12-14 22:47 !&&|| 阅读(28) 评论(0) 推荐(0) 编辑
摘要:输入一个二叉树,将它变换为它的镜像。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : va 阅读全文
posted @ 2022-12-14 22:46 !&&|| 阅读(22) 评论(0) 推荐(0) 编辑
摘要:输入两棵二叉树 A,BA,B,判断 BB 是不是 AA 的子结构。 我们规定空树不是任何树的子结构。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNod 阅读全文
posted @ 2022-12-14 22:46 !&&|| 阅读(36) 评论(0) 推荐(0) 编辑
摘要:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。 class Solution { public: ListNode* merge(ListNode* l1, ListNode* l2) { auto dummy = new ListNode(-1); auto cur 阅读全文
posted @ 2022-12-14 22:45 !&&|| 阅读(15) 评论(0) 推荐(0) 编辑
摘要:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val 阅读全文
posted @ 2022-12-14 22:44 !&&|| 阅读(22) 评论(0) 推荐(0) 编辑
摘要:给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) 阅读全文
posted @ 2022-12-14 22:44 !&&|| 阅读(21) 评论(0) 推荐(0) 编辑
摘要:输入一个链表,输出该链表中倒数第 k 个结点。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NUL 阅读全文
posted @ 2022-12-14 15:06 !&&|| 阅读(18) 评论(0) 推荐(0) 编辑
摘要:输入一个整数数组,实现一个函数来调整该数组中数字的顺序。 使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。 class Solution { public: void reOrderArray(vector<int> &a) { int l = 0, r = a.size() - 1 阅读全文
posted @ 2022-12-14 14:33 !&&|| 阅读(13) 评论(0) 推荐(0) 编辑
摘要:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 class Solution { public: 阅读全文
posted @ 2022-12-14 14:22 !&&|| 阅读(26) 评论(0) 推荐(0) 编辑
摘要:在一个排序的链表中,存在重复的节点,请删除该链表中重复的节点,重复的节点不保留。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : 阅读全文
posted @ 2022-12-14 14:21 !&&|| 阅读(25) 评论(0) 推荐(0) 编辑
摘要:给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。 假设链表一定存在,并且该节点一定不是尾节点。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * L 阅读全文
posted @ 2022-12-14 13:40 !&&|| 阅读(49) 评论(0) 推荐(0) 编辑
摘要:输入一个 32 位整数,输出该数二进制表示中 1 的个数。 class Solution { public: int lowbit (int x) { return x & -x; } int NumberOf1(uint32_t x) { int ans = 0; while (x) { x -= 阅读全文
posted @ 2022-12-13 21:36 !&&|| 阅读(36) 评论(0) 推荐(0) 编辑
摘要:给你一根长度为 nn 绳子,请把绳子剪成 m 段(m、n 都是整数,2≤n≤58 并且 m≥2)。 每段的绳子的长度记为 k[1]、k[2]、……、k[m]。 k[1]k[2]…k[m]可能的最大乘积是多少? 例如当绳子的长度是 8 时,我们把它剪成长度分别为 2、3、3 的三段,此时得到最大的乘积 阅读全文
posted @ 2022-12-13 21:28 !&&|| 阅读(26) 评论(0) 推荐(0) 编辑
摘要:地上有一个 mm 行和 nn 列的方格,横纵坐标范围分别是 0∼m−10∼m−1 和 0∼n−10∼n−1。 一个机器人从坐标 (0,0)(0,0) 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格。 但是不能进入行坐标和列坐标的数位之和大于 kk 的格子。 请问该机器人能够达到多少个格子 阅读全文
posted @ 2022-12-13 21:24 !&&|| 阅读(64) 评论(0) 推荐(0) 编辑
摘要:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。 路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。 如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 class Solution { public: vector 阅读全文
posted @ 2022-12-13 19:37 !&&|| 阅读(7) 评论(0) 推荐(0) 编辑
摘要:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个升序的数组的一个旋转,输出旋转数组的最小元素。 例如数组 {3,4,5,1,2}{3,4,5,1,2} 为 {1,2,3,4,5}{1,2,3,4,5} 的一个旋转,该数组的最小值为 11。 数组可能包含重复项。 class 阅读全文
posted @ 2022-12-13 18:47 !&&|| 阅读(11) 评论(0) 推荐(0) 编辑
摘要:输入一个整数 n ,求斐波那契数列的第 n 项。 假定从 0 开始,第 0 项为 0。 class Solution { public: int Fibonacci(int n) { if (n < 2) return n; int a = 0, b = 1, c; for (int i = 2; 阅读全文
posted @ 2022-12-10 16:54 !&&|| 阅读(47) 评论(0) 推荐(0) 编辑
摘要:请用栈实现一个队列,支持如下四种操作: push(x) – 将元素x插到队尾; pop() – 将队首的元素弹出,并返回该元素; peek() – 返回队首元素; empty() – 返回队列是否为空; class MyQueue { public: /** Initialize your data 阅读全文
posted @ 2022-12-10 16:52 !&&|| 阅读(17) 评论(0) 推荐(0) 编辑
摘要:给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNod 阅读全文
posted @ 2022-12-10 16:42 !&&|| 阅读(14) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示