每日一练--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 表中相对应的列名称。

例如:

A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28 
...

示例 1:

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

示例 2:

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

示例 3:

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

示例 4:

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

提示:

  • 1 <= columnNumber <= 231 - 1
A#include <bits/stdc++.h>
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 <bits/stdc++.h>
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 <bits/stdc++.h>
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以上都不对

答案:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    string convertToTitle(int n)
    {
        string res;
        while (n)
        {
            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;
    }
};

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

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

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

#include <stdio.h>
int main()
{
    int min = (1 << 31) - 1;
    int idx = 0;
    int arr[] = {915, 941, 960, 976, 992, 1015, 1034, 1050, 1073, 1089, 1115, 1131, 1150, 1166, 1182, 1208, 1227};
    int n = 1000;
    for (int i = 0; i < sizeof(arr) / sizeof(int); i++)
    {
        int diff = arr[i] - n;
        if (diff < 0)
            diff = -diff;
        _________________;
    }
    printf("最接近的是%d 下标是%d", arr[idx], idx);
    return 0;
}
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;
}

答案:

if (diff < min)
{
	min = diff;
	idx = i;
}

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

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

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

例如,给出

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

返回如下的二叉树:

 

 

A#include <bits/stdc++.h>
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<int> &inorder, vector<int> &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<int> &inorder, int i1, int i2, vector<int> &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 <bits/stdc++.h>
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<int> &inorder, vector<int> &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<int> &inorder, int i1, int i2, vector<int> &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 <bits/stdc++.h>
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<int> &inorder, vector<int> &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<int> &inorder, int i1, int i2, vector<int> &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 <bits/stdc++.h>
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<int> &inorder, vector<int> &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<int> &inorder, int i1, int i2, vector<int> &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;
    }
};

答案:

#include <bits/stdc++.h>
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<int> &inorder, vector<int> &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<int> &inorder, int i1, int i2, vector<int> &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;
    }
};

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兔子递归

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值