c语言sscanf函数的用法是什么
210
2022-09-04
C++ 算法(一)
在一个长度为n+1的数组里的所有数字都在1 ~n的范围内,所以数组中至少有一个数字是重复 的。从数组中找出任意一个重复的数字,但不能 修改输入的数组。如{2,3,5,4,3,2,6,7}得到2或者3
#include
找出数组中重复的数字:
class Solution{public: bool duplicate(int nums[], int n, int* out) { for (int i = 0; i < n; i++) { while (nums[i] != i) { if (nums[i] == nums[nums[i]]) { out[0] = nums[i]; return true; } else swap(nums[i], nums[nums[i]]); } } return false; } void swap( int i, int j) { }};
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一 列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判 断数组中是否含有该整数。
bool Find(int target, vector
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字 符串为We Are Happy.则经过替换之后的字符串为We%20Are% 20Happy。
void replaceSpace(char* str, int length){ int count = 0; for (int i = 0; i < length; i++) { if (str[i] == ' ') count++; } for (int i = length - 1; i >= 0; i--) { if (str[i] != ' ') str[i + count * 2] = str[i]; if (str[i] == ' ') { count--; str[i + count * 2] = '%'; str[i + count * 2 + 1] = '2'; str[i + count * 2 + 2] = '0'; } }}
输入一个链表,按链表从尾到头的顺序返回一个ArrayList
struct ListNode{ int val; struct ListNode* next; ListNode(int x) : val(x), next(NULL) { }};vector
//输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍
//历的结果中都不含重复的数字。例如输入前序遍历序列{ 1,2,4,7,3,5,6,8 }和中序遍历序列//{ 4,7,2,1,5,3,8,6 },则重建二叉树并返回
struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) :val(x), left(NULL), right(NULL) { }};unordered_map
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点 不仅包含左右子结点,同时包含指向父结点的指针。
struct TreeLinkNode{ int val; struct TreeLinkNode* left; struct TreeLinkNode* right; struct TreeLinkNode* next; TreeLinkNode(int x) :val(x), left(NULL), right(NULL), next(NULL) { }};TreeLinkNode* GetNext(TreeLinkNode* p) { //右子树存在 右子树最左边的结点 if (p->right) { p = p->right; while (p->left) p = p->left; return p; } //右子树不存在 只有左子树 while (p->next) { //p不是根节点 if (p == p->next->left) return p->next; p = p->next; } return NULL;}
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
//先进后出 栈//先进先出 队列stack
要求输入一个整数n,请你输出斐波那契数列的第n项(从0开 始,第0项为0)
int Fibonacci(int n) { if (n == 0) return 0; if (n == 1) return 1; int first = 0, second = 1; int res = 0; for (int i = 2; i <= n; i++) { res = first + second; first = second; second = res; } return res;}
旋转数组的最小数字:
int minNumberInRotateArray(vector
矩阵中的路径
bool hashPath(char* matrix, int rows, int cols, char* str){ if (rows == 1 && cols == 1) { if (matrix[0] == str[0]) return true; else return false; //matrix 一维 //str 目标字符串 str \0 for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (dfs(matrix, rows, cols, str, 0, i, j)) return true; } } return false; }}bool dfs(char* matrix, int rows, int cols, char* str, int u, int x, int y){ if (str[u] == '\0') return true; int dx[4] = { -1, 0, 1,0 }, dy[4] = { 0, 1, 0, -1 }; for (int i = 0; i < 4; i++) { int a = x + dx[i], b = y + dy[i]; if (a >= 0 && a < rows && b >= 0 && b < cols && matrix[a * cols + b] == str[u]) { char t = matrix[a * cols + b]; matrix[a * cols + b] = '*'; if (dfs(matrix, rows, cols, str, u + 1, a, b)) return true; matrix[a * cols + b] = t; } } return false;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~