首页 > 斗鱼-8月8日笔试

斗鱼-8月8日笔试

1.大数减法
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
class Solution {
public:
    /**
     * 计算字符串形式的整数的差
     * @param num1 string字符串 被减数(字符串形式)
     * @param num2 string字符串 减数(字符串形式)
     * @return string字符串
     */
    string sub_strings(string num1, string num2)
    {
        vector<int>result;
        while(num2.size()!=num1.size())
        {
            num2=num2.insert(0,1,'0');
        }
        for(int i=num1.size()-1;i>=0;i--)
        {
            if(num1[i]>=num2[i])
            result.push_back(num1[i]-num2[i]);
            else 
            {
                result.push_back(num1[i]-num2[i]+10);
                if(num1[i-1]==0)//=0
                {
                    num1[i-1]=9;
                    int temp=i-2;
                    while(num1[temp]==0)
                    {
                        num1[temp]=9;
                        temp--;
                    }
                    num1[temp]--;
                }
                else //!=0
                {
                    num1[i-1]--;
                }
            }
        }
        string r="";
        for(int i=result.size()-1;i>=0;i--)
        r.push_back(result[i]+'0');
        return r;
    }
};
2.左右子树之差
//枓與
/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 计算二叉树左叶子之和 减去 右叶子之和 的差值
     * @param node TreeNode类 
     * @return int整型
     */
    int lv=0;
    int lr=0;
    void Preorder(TreeNode*t)
    {
        if(t)
        {
            if(t->left && t->left->left==NULL&& t->left->right==NULL)
            lv=lv+t->left->val;
            if(t->right && t->right->left==NULL&& t->right->right==NULL)
            lr=lr+t->right->val;
            Preorder(t->left);
            Preorder(t->right);
        }
    }
    int subtraction_of_leaves(TreeNode* node) 
    {
        Preorder(node);
        return lv-lr;
    }
};


全部评论

(3) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐