12 2022 档案
摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 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
阅读全文
摘要:请实现一个函数,用来判断一棵二叉树是不是对称的。 如果一棵二叉树和它的镜像一样,那么它是对称的。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode
阅读全文
摘要:输入一个二叉树,将它变换为它的镜像。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : va
阅读全文
摘要:输入两棵二叉树 A,BA,B,判断 BB 是不是 AA 的子结构。 我们规定空树不是任何树的子结构。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNod
阅读全文
摘要:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。 class Solution { public: ListNode* merge(ListNode* l1, ListNode* l2) { auto dummy = new ListNode(-1); auto cur
阅读全文
摘要:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val
阅读全文
摘要:给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x)
阅读全文
摘要:输入一个链表,输出该链表中倒数第 k 个结点。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NUL
阅读全文
摘要:输入一个整数数组,实现一个函数来调整该数组中数字的顺序。 使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。 class Solution { public: void reOrderArray(vector<int> &a) { int l = 0, r = a.size() - 1
阅读全文
摘要:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 class Solution { public:
阅读全文
摘要:在一个排序的链表中,存在重复的节点,请删除该链表中重复的节点,重复的节点不保留。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) :
阅读全文
摘要:给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。 假设链表一定存在,并且该节点一定不是尾节点。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * L
阅读全文
摘要:输入一个 32 位整数,输出该数二进制表示中 1 的个数。 class Solution { public: int lowbit (int x) { return x & -x; } int NumberOf1(uint32_t x) { int ans = 0; while (x) { x -=
阅读全文
摘要:给你一根长度为 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 的三段,此时得到最大的乘积
阅读全文
摘要:地上有一个 mm 行和 nn 列的方格,横纵坐标范围分别是 0∼m−10∼m−1 和 0∼n−10∼n−1。 一个机器人从坐标 (0,0)(0,0) 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格。 但是不能进入行坐标和列坐标的数位之和大于 kk 的格子。 请问该机器人能够达到多少个格子
阅读全文
摘要:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。 路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。 如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 class Solution { public: vector
阅读全文
摘要:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个升序的数组的一个旋转,输出旋转数组的最小元素。 例如数组 {3,4,5,1,2}{3,4,5,1,2} 为 {1,2,3,4,5}{1,2,3,4,5} 的一个旋转,该数组的最小值为 11。 数组可能包含重复项。 class
阅读全文
摘要:已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums
阅读全文
摘要:整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ...,
阅读全文
摘要:输入一个整数 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;
阅读全文
摘要:请用栈实现一个队列,支持如下四种操作: push(x) – 将元素x插到队尾; pop() – 将队首的元素弹出,并返回该元素; peek() – 返回队首元素; empty() – 返回队列是否为空; class MyQueue { public: /** Initialize your data
阅读全文
摘要:给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNod
阅读全文
摘要:输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(i
阅读全文
摘要:输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值。 返回的结果用数组存储。 class Solution { public: vector<int> printListReversingly(ListNode* head) { vector<int> ans; for (auto p = h
阅读全文
摘要:请实现一个函数,把字符串中的每个空格替换成"%20"。 class Solution { public: string replaceSpaces(string &s) { string ans = ""; for (char c : s) { if (c == ' ') { ans += "%20
阅读全文
摘要:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 class Solution { public: bool searchArray(vector<vector<int>> arr
阅读全文
摘要:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 注意:不能修改输入的数组。 class Solution { public: int duplicateInAr
阅读全文
摘要:输入一个长度为 n 的整数数列,从小到大输出前 m 小的数。 #include <iostream> using namespace std; const int N = 1e5 + 10; int n, m, len; int h[N]; void down (int u) { int t = u
阅读全文
摘要:动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。 A 吃 B,B 吃 C,C 吃 A。 现有 N 个动物,以 1∼N 编号。 每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这 N个动物所构成的食物链关系进行描述: 第一种说法是 1 X Y
阅读全文