目录
第1题:相同的树
第2题:对称二叉树
第3题:二叉树的最大深度
第4题:二叉树的最小深度
第5题:路径总和
第6题:杨辉三角1
第7题:杨辉三角2
第8题:买卖股票的最佳时机1
第9题:买卖股票的最佳时机2
第10题:验证回文串
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:相同的树试题要求如下:
回答(C语言):
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q){
if(!p && !q){
return true;
}
else if(!p || !q){
return false;
}
else {
if(p->val != q->val){
return false;
}
else {
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}
}
}
第2题:对称二叉树
试题要求如下:
回答(C语言):
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isMirror(struct TreeNode* p, struct TreeNode* q)
{
if(!p && !q)
return true;
else if(!p || !q)
return false;
else{
if(p->val == q->val)
return isMirror(p->left, q->right) && isMirror(p->right, q->left);
else
return false;
}
}
bool isSymmetric(struct TreeNode* root){
return isMirror(root, root);
}
第3题:二叉树的最大深度
试题要求如下:
回答(C语言):
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int maxDepth(struct TreeNode* root){
if(root == NULL){
return 0;
}
int left_length = maxDepth(root->left) + 1;
int right_length = maxDepth(root->right) + 1;
if( left_length >= right_length){
return left_length;
}else{
return right_length;
}
}
第4题:二叉树的最小深度
试题要求如下:
回答(C语言):
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int minDepth(struct TreeNode* root){
if(root == NULL){
return 0;
}
int left_length = minDepth(root->left) + 1;
int right_length = minDepth(root->right) + 1;
if( root->left == NULL ){
return right_length;
}else if( root->right == NULL ){
return left_length;
}else if( left_length >= right_length ){
return right_length;
}else{
return left_length;
}
}
第5题:路径总和
试题要求如下:
回答(C语言):
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool hasPathSum(struct TreeNode* root, int sum){
if(root == NULL)
return 0;
sum-=root->val;
if(root->left == NULL && root->right == NULL)
return sum==0?1:0;
return hasPathSum(root->left,sum) || hasPathSum(root->right,sum);
}
第6题:杨辉三角1
试题要求如下:
回答(C语言):
/**
* Return an array of arrays of size *returnSize.
* The sizes of the arrays are returned as *returnColumnSizes array.
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/
int** generate(int numRows, int* returnSize, int** returnColumnSizes){
//返回的是二维数组,所以需要保存每一行的信息
*returnSize = numRows;
//returnColumnSizes储存杨辉三角每一行元素的个数
*returnColumnSizes = (int *)malloc(sizeof(int)*numRows);
int** res = (int**)malloc(sizeof(int*)*numRows);
for (int i = 0; i < numRows; i++) {
(*returnColumnSizes)[i] = i+1;
res[i] = (int*)malloc(sizeof(int)*(i+1));
res[i][0] = 1;
res[i][i] = 1;
for (int j = 1; j < i; j++) {
res[i][j] = res[i-1][j] + res[i-1][j-1];
}
}
return res;
}
第7题:杨辉三角2
试题要求如下:
回答(C语言):
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* getRow(int rowIndex, int* returnSize){
*returnSize = rowIndex + 1;
int* p = (int*)malloc(sizeof(int) * (rowIndex + 1));
int i, j, k = 0;
for(i = 0; i = 1; j--){
p[j] += p[j-1];
}
}
return p;
}
第8题:买卖股票的最佳时机1
试题要求如下:
回答(C语言):
/**
* i指向当前遍历的值,min指向当前遍历过的值中的最小值,max表示当前的最大利润。
* 当prices[i] < min,更新,否则判断prices[i] - min是否大于max,然后更新max
*/
int maxProfit(int* prices, int pricesSize){
if(pricesSize max){
max = prices[i] - min;
}
}
return max;
}
第9题:买卖股票的最佳时机2
试题要求如下:
回答(C语言):
int maxProfit(int* prices, int pricesSize){
int profit=0;
for(int i=0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?