目录
第1题:两数之和IV—输入BST
第2题:柠檬水找零
第3题:左叶子之和
第4题:第K个缺失的正整数
第5题:反转字符串2
第6题:最小移动次数使数组元素相等
第7题:分发饼干
第8题:二叉树的最小深度
第9题:消失的数字
第10题:多数元素
力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:两数之和IV—输入BST试题要求如下:
解答思路:
1、使用中序遍历把结果存在数组中;
2、用双指针(即下标),来找对应结果是否存在 i指向最小,j指向最大。若i+j小于目标值,那么i++,i+j大于>目标值,则j--。
回答(C语言):
#define Maxsize 10000
void inorder(struct TreeNode* root,int *nums,int* length);
bool findTarget(struct TreeNode* root, int k){
int i=0,j=-1; //j记录最大值的下标(即数组最后一个元素),把其指针传给inorder函数
int* nums=(int*)malloc(Maxsize*sizeof(int));
inorder(root,nums,&j);
while(ival;
inorder(root->right,nums,length);
}
运行效率如下所示:
试题要求如下:
回答(C语言):
bool lemonadeChange(int*a, int n)
{
if (a == NULL || n 0 && s5 > 0) {
s20++, s10--, s5--;
continue; // 找开了
}
if (s5 > 3) {
s20++, s5 -= 3;
continue; // 找开了
}
return false;
case 10: //给10元找5元
if (s5 > 0) {
s10++, s5--;
continue; // 找开了
}
return false;
case 5: // 给5元
s5++;
continue; // 不找钱
default: // 其他都失败
return false;
}
}
return true;
}
运行效率如下所示:
试题要求如下:
回答(C语言):
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int sumOfLeftLeaves(struct TreeNode* root){
if(!root) return 0;
int sum=0;
if(root->left){
if(!root->left->left&&!root->left->right){
sum+=root->left->val;
}
else{
sum+=sumOfLeftLeaves(root->left);
}
}
if(root->right){
sum+=sumOfLeftLeaves(root->right);
}
return sum;
}
运行效率如下所示:
试题要求如下:
回答(C语言):
int findKthPositive(int* arr, int arrSize, int k){
int i = 0, cnt=0, hash[10000] = {0};
for(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脚手架写一个简单的页面?