【每日刷题】Day78

【每日刷题】Day78

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 1608. 特殊数组的特征值 - 力扣(LeetCode)

2. 1385. 两个数组间的距离值 - 力扣(LeetCode)

3. 面试题 04.10. 检查子树 - 力扣(LeetCode)

1. 1608. 特殊数组的特征值 - 力扣(LeetCode)

//思路:假设法。我们在最开始假设特征值为numsSize,遍历数组,记录数组中≥特征值元素的个数,看是否与特征值相同。相同则跳出循环,不相同则将特征值--继续下一次比较。

int specialArray(int* nums, int numsSize)

{

    int ans = numsSize;//初始特征值假设为numsSize

    while(ans)

    {

        int flag = 0;

        for(int i = 0;i<numsSize;i++)

        {

            if(nums[i]>=ans)//计算数组中≥特征值的元素个数

                flag++;

        }

        if(flag==ans)//判断是否与特征值相同,由此判断特征值假设正不正确

            break;

        else//不正确就将特征值--继续进行下一次比较

            ans--;

    }

    if(!ans)//当特征值为0时,说明该数组不是一个特征数组

        return -1;

    return ans;

}

2. 1385. 两个数组间的距离值 - 力扣(LeetCode)

//思路:遍历。

int findTheDistanceValue(int* arr1, int arr1Size, int* arr2, int arr2Size, int d)

{

    int ans = 0;

    for(int i = 0;i<arr1Size;i++)

    {

        int flag = 1;

        for(int j = 0;j<arr2Size;j++)

        {

            if(abs(arr1[i]-arr2[j])<=d)

                flag = 0;

        }

        if(flag)

            ans++;

    }

    return ans;

}

3. 面试题 04.10. 检查子树 - 力扣(LeetCode)

//思路:递归遍历。遍历二叉树1,当遇到的节点val=二叉树2根节点val时,开始比较两树是否相同。当二叉树1中有多个节点val=二叉树2根节点val时,需要都比较一下。

typedef struct TreeNode TN;


 

bool __checkSubTree1(TN* root1,TN* root2)//判断两树是否完全相同

{

    if(!root1&&!root2)

        return true;

    else if((!root1&&root2)||(root1&&!root2))

        return false;

    return __checkSubTree1(root1->left,root2->left)

    &&__checkSubTree1(root1->right,root2->right);

}


 

bool _checkSubTree(TN* root1,TN* root2)

{

    if(!root1)

        return false;

    if(root1->val==root2->val)//遇到节点的val=二叉树2根节点的val时开始比较

    {

        bool ret = __checkSubTree1(root1,root2);

        if(ret)//由于二叉树1中可能存在多个节点的val=二叉树2根节点的val,因此不能比较一个就返回结果

            return ret;

    }

    bool left = _checkSubTree(root1->left,root2);

    if(left)

        return left;

    return _checkSubTree(root1->right,root2);

}

bool checkSubTree(struct TreeNode* t1, struct TreeNode* t2)

{

    return _checkSubTree(t1,t2);

}

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值