• 每日一练--IT冷知识&C/C++--第三天


    中国网络之王

    新浪是中国的门户网站公司,一家中文网络内容服务提供商;新浪网的前身是广东人王志东的四通利方公司,王志东曾连续 3 次到美国硅谷“寻宝”,确定开展全球华人互联网网站业务为公司今后主要发展方向。新浪网也在他的领导下成为曾经三大门户中绝对的大哥。

    除了创建新浪网以外,王志东还有过以下哪一项重要成就?

    A第一个写出 Windows 中文平台的程序员
    B第一个开设中国新闻网站的程序员
    C第一个创建个人主页的程序员
    D第一个上《时代》杂志的中国程序员

    答案:第一个写出 Windows 中文平台的程序员


    中美点评谁更早?

    美国最大的点评网站是 Yelp,它于 2004 年的 10 月 13 日在旧金山起步,囊括各地餐馆、购物中心、酒店、旅游等领域的商户,用户可以在 Yelp 网站中给商户打分,提交评论,交流购物体验等。

    Yelp 网的诞生时间和中国的大众点评相差几年?

    A比大众点评晚 2 年
    B和大众点评同年诞生
    C比大众点评晚 1 年
    D比大众点评早 1 年

    答案:比大众点评晚 1 年


    发明Linux的帕特里克

    Slackware Linux 是目前市场存活时间最长的 Linux 发行版之一,它基于一个叫做 SLS(Soft Landing Systems)的 Linux 项目而设计,易于使用和稳定。

    Slackware Linux 的创始人是谁?

    APatrick Schueffel
    BPatrick Drahi
    CPatrick Loubert
    DPatrick Volkerding

    答案:Patrick Volkerding


    Excel表列名称

    给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。

    例如:

    1. A -> 1
    2. B -> 2
    3. C -> 3
    4. ...
    5. Z -> 26
    6. AA -> 27
    7. AB -> 28
    8. ...

    示例 1:

    输入:columnNumber = 1
    输出:"A"
    

    示例 2:

    输入:columnNumber = 28
    输出:"AB"
    

    示例 3:

    输入:columnNumber = 701
    输出:"ZY"
    

    示例 4:

    输入:columnNumber = 2147483647
    输出:"FXSHRXW"
    
    

    提示:

    • 1 <= columnNumber <= 231 - 1
    A#include
    using namespace std;
    class Solution
    {
    public:
        string convertToTitle(int n)
        {
            string res;
            while (temp)
            {
                int temp = n % 26;
                n /= 26;
                if (n)
                    res.push_back('A' + temp - 1);
                else
                {
                    res.push_back('Z');
                    n--;
                }
            }
            reverse(res.begin(), res.end());
            return res;
        }
    };
    B#include
    using namespace std;
    class Solution
    {
    public:
        string convertToTitle(int n)
        {
            string res;
            while (n)
            {
                int temp = n % 26;
                n /= 26;
                if (n)
                    res.push_back('A' + temp - 1);
                else
                {
                    res.push_back('Z');
                    n--;
                }
            }
            reverse(res.begin(), res.end());
            return res;
        }
    };
    C#include
    using namespace std;
    class Solution
    {
    public:
        string convertToTitle(int n)
        {
            string res;
            while (temp)
            {
                int temp = n % 26;
                n /= 26;
                if (temp)
                    res.push_back('A' + temp - 1);
                else
                {
                    res.push_back('Z');
                    n--;
                }
            }
            reverse(res.begin(), res.end());
            return res;
        }
    };
    D以上都不对

    答案:

    1. #include
    2. using namespace std;
    3. class Solution
    4. {
    5. public:
    6. string convertToTitle(int n)
    7. {
    8. string res;
    9. while (n)
    10. {
    11. int temp = n % 26;
    12. n /= 26;
    13. if (temp)
    14. res.push_back('A' + temp - 1);
    15. else
    16. {
    17. res.push_back('Z');
    18. n--;
    19. }
    20. }
    21. reverse(res.begin(), res.end());
    22. return res;
    23. }
    24. };

    目标值与数组所有元素去比对,找出最接近的元素,输出下标

     举例如下:一个数组{915,941,960,976,992,1015,1034,1050,1073,1089,1115,1131,1150,1166,1182,1208,1227};目标值假设是1000,最接近元素为992,下标为4

    以下程序实现了这一功能,请你填补空白处内容:

    1. #include
    2. int main()
    3. {
    4. int min = (1 << 31) - 1;
    5. int idx = 0;
    6. int arr[] = {915, 941, 960, 976, 992, 1015, 1034, 1050, 1073, 1089, 1115, 1131, 1150, 1166, 1182, 1208, 1227};
    7. int n = 1000;
    8. for (int i = 0; i < sizeof(arr) / sizeof(int); i++)
    9. {
    10. int diff = arr[i] - n;
    11. if (diff < 0)
    12. diff = -diff;
    13. _________________;
    14. }
    15. printf("最接近的是%d 下标是%d", arr[idx], idx);
    16. return 0;
    17. }
    Aif (diff < min)
    {
        min = diff;
        idx = i;
    }
    Bif (diff > min)
    {
        min = diff;
        idx = i;
    }
    Cif (diff == min)
    {
        min = diff;
        idx = i;
    }
    Dif (diff >= min)
    {
        min = diff;
        idx = i;
    }

    答案:

    1. if (diff < min)
    2. {
    3. min = diff;
    4. idx = i;
    5. }

    从中序与后序遍历序列构造二叉树

    根据一棵树的中序遍历与后序遍历构造二叉树。

    注意:
    你可以假设树中没有重复的元素。

    例如,给出

    中序遍历 inorder = [9,3,15,20,7]
    后序遍历 postorder = [9,15,7,20,3]

    返回如下的二叉树:

     
    

     

    A#include
    using namespace std;
    struct TreeNode
    {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    class Solution
    {
    public:
        TreeNode *buildTree(vector &inorder, vector &postorder)
        {
            if (0 == inorder.size() || 0 == postorder.size())
            {
                return NULL;
            }
            return build(inorder, 0, inorder.size() - 1, postorder, 0, postorder.size() - 1);
        }
        TreeNode *build(vector &inorder, int i1, int i2, vector &postorder, int p1, int p2)
        {
            TreeNode *root = new TreeNode(postorder[p2]);
            int i = i1;
            while (i <= i2 && postorder[p2] != inorder[i])
            {
                i++;
            }
            int left = i - i1;
            int right = i2 - i;
            if (i <= i2 && postorder[p2] != inorder[i])
            {
                root->left = build(inorder, i1, i - 1, postorder, p1, p1 + left - 1);
            }
            if (right > 0)
            {
                root->right = build(inorder, i + 1, i2, postorder, p1 + left, p2 - 1);
            }
            return root;
        }
    };
    B#include
    using namespace std;
    struct TreeNode
    {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    class Solution
    {
    public:
        TreeNode *buildTree(vector &inorder, vector &postorder)
        {
            if (0 == inorder.size() || 0 == postorder.size())
            {
                return NULL;
            }
            return build(inorder, 0, inorder.size() - 1, postorder, 0, postorder.size() - 1);
        }
        TreeNode *build(vector &inorder, int i1, int i2, vector &postorder, int p1, int p2)
        {
            TreeNode *root = new TreeNode(postorder[p2]);
            int i = i1;
            while (i <= i2 && postorder[p2] != inorder[i])
            {
                i++;
            }
            int left = i - i1;
            int right = i2 - i;
            if (left > 0)
            {
                root->left = build(inorder, i1, i - 1, postorder, p1, p1 + left - 1);
            }
            if (right > 0)
            {
                root->right = build(inorder, i + 1, i2, postorder, p1 + left, p2 - 1);
            }
            return root;
        }
    };
    C#include
    using namespace std;
    struct TreeNode
    {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    class Solution
    {
    public:
        TreeNode *buildTree(vector &inorder, vector &postorder)
        {
            if (0 == inorder.size() || 0 == postorder.size())
            {
                return NULL;
            }
            return build(inorder, 0, inorder.size() - 1, postorder, 0, postorder.size() - 1);
        }
        TreeNode *build(vector &inorder, int i1, int i2, vector &postorder, int p1, int p2)
        {
            TreeNode *root = new TreeNode(postorder[p2]);
            int i = i1;
            while (i <= i2 && postorder[p2] != inorder[i])
            {
                i++;
            }
            int left = i - i1;
            int right = i2 - i;
            if (right > 0)
            {
                root->left = build(inorder, i1, i - 1, postorder, p1, p1 + left - 1);
            }
            if (right > 0)
            {
                root->right = build(inorder, i + 1, i2, postorder, p1 + left, p2 - 1);
            }
            return root;
        }
    };
    D#include
    using namespace std;
    struct TreeNode
    {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    class Solution
    {
    public:
        TreeNode *buildTree(vector &inorder, vector &postorder)
        {
            if (0 == inorder.size() & 0 == postorder.size())
            {
                return NULL;
            }
            return build(inorder, 0, inorder.size() - 1, postorder, 0, postorder.size() - 1);
        }
        TreeNode *build(vector &inorder, int i1, int i2, vector &postorder, int p1, int p2)
        {
            TreeNode *root = new TreeNode(postorder[p2]);
            int i = i1;
            while (i <= i2 && postorder[p2] 0 <= = inorder[i])
            {
                i++;
            }
            int left = i - i1;
            int right = i2 - i;
            if (left > 0)
            {
                root->left = build(inorder, i1, i - 1, postorder, p1, p1 + left - 1);
            }
            if (right > 0)
            {
                root->right = build(inorder, i + 1, i2, postorder, p1 + left, p2 - 1);
            }
            return root;
        }
    };

    答案:

    1. #include
    2. using namespace std;
    3. struct TreeNode
    4. {
    5. int val;
    6. TreeNode *left;
    7. TreeNode *right;
    8. TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    9. };
    10. class Solution
    11. {
    12. public:
    13. TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder)
    14. {
    15. if (0 == inorder.size() || 0 == postorder.size())
    16. {
    17. return NULL;
    18. }
    19. return build(inorder, 0, inorder.size() - 1, postorder, 0, postorder.size() - 1);
    20. }
    21. TreeNode *build(vector<int> &inorder, int i1, int i2, vector<int> &postorder, int p1, int p2)
    22. {
    23. TreeNode *root = new TreeNode(postorder[p2]);
    24. int i = i1;
    25. while (i <= i2 && postorder[p2] != inorder[i])
    26. {
    27. i++;
    28. }
    29. int left = i - i1;
    30. int right = i2 - i;
    31. if (left > 0)
    32. {
    33. root->left = build(inorder, i1, i - 1, postorder, p1, p1 + left - 1);
    34. }
    35. if (right > 0)
    36. {
    37. root->right = build(inorder, i + 1, i2, postorder, p1 + left, p2 - 1);
    38. }
    39. return root;
    40. }
    41. };

  • 相关阅读:
    HTTP与TCP的特点
    电压源的电路分析知识分享
    《uni-app》一个非canvas的飞机对战小游戏实现-敌机模型实现
    前馈神经网络解密:深入理解人工智能的基石
    FFN -> GLU -> GAU
    it监控系统可以电脑吗?有什么效果
    ch04图片
    可靠性设计
    Linux学习-68-日志转储logrotate命令(logrotate配置文件)
    python(进阶篇)——多线程
  • 原文地址:https://blog.csdn.net/mooczhimahu/article/details/126477898