目录
世界上第一枚微处理器 Intel 4004 在 1971 年正式推出,英特尔反复重启这项芯片的生产计划,以至于它其实一共拥有四个设计者。
以下四个人名中,哪一个不是 Intel 4004 的设计者?
| A | Ted Hoff |
| B | Masatoshi Shima |
| C | Stanley Mazor |
| D | Chester Carlson |
答案:Chester Carlson
NetBSD 是一份自由、安全的具有高度可定制性的类 Unix 操作系统,适用于多种平台,从 64 位 AMD Athlon 服务器和桌面系统到手持设备和嵌入式设备。
NetBSD 项目的口号是什么?
| A | Life is short, use Unix |
| B | Life is short, use NetBSD |
| C | Of course it runs NetBSD |
| D | 一次编译,到处运行 |
答案:Of course it runs NetBSD
TensorFlow 是一个开源软件库,用于各种感知和语言理解任务的机器学习,在 2015 年 11 月 9 日正式发布;TensorFlow 目前被 50 个团队用于研究和生产许多 Google 商业产品,是数学、机器学习和深度学习领域应用最广泛的开源工具之一。
TensorFlow 是由谷歌的哪一支团队研发而出?
| A | 谷歌大脑(Google Brain) |
| B | 谷歌团队(Google Teamwork) |
| C | 谷歌智囊(Google Truster) |
| D | 谷歌舰队(Google Armada) |
答案:谷歌大脑(Google Brain)
题目描述
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
输入
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
输出
对于每组输入,请输出结果。
样例输入
- 4
- 1 2 3 4
- 3
样例输出
2
以下程序实现了这一功能,请你填补空白处的内容:
- #include <iostream>
- using namespace std;
- int main()
- {
- int n = 0;
- cin >> n;
- int *ptr = new (nothrow) int[n];
- for (auto i = 0; i < n; i++)
- {
- cin >> ptr[i];
- }
- int x = 0;
- cin >> x;
- auto j = 0;
- auto status = 0;
- for (; j < n; ++j)
- {
- ______________;
- }
- if (status == 0)
- {
- j = -1;
- }
- cout << j << endl;
- delete[] ptr;
- cin.get();
- cin.get();
- return 0;
- }
| A | if (ptr[j] == x) { status = 1; continue; } |
| B | if (ptr[j] >= x) { status = 1; continue; } |
| C | if (ptr[j] == x) { status = 1; break; } |
| D | if (ptr[j] <= x) { status = 1; continue; } |
答案:
- if (ptr[j] <= x)
- {
- status = 1;
- continue;
- }
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。
叶子节点 是指没有子节点的节点。
示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22 输出:true
示例 2:

输入:root = [1,2,3], targetSum = 5 输出:false
示例 3:
输入:root = [1,2], targetSum = 0 输出:false
提示:
[0, 5000] 内-1000 <= Node.val <= 1000-1000 <= targetSum <= 1000| 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: bool hasPathSum(TreeNode *root, int sum) { bool flag = false; backTrack(root, sum, flag); return flag; } void backTrack(TreeNode *root, int sum, bool &flag) { if (!root) { return; } if (!root->left && !root->right) { sum -= root->val; if (!root->left && !root->right) { flag = true; } sum += root->val; return; } sum -= root->val; backTrack(root->left, sum, flag); backTrack(root->right, sum, flag); sum += root->val; } }; |
| 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: bool hasPathSum(TreeNode *root, int sum) { bool flag = false; backTrack(root, sum, flag); return flag; } void backTrack(TreeNode *root, int sum, bool &flag) { if (!root) { return; } if (!root->left && !root->right) { sum -= root->val; if (sum == 0) { flag = true; } sum += root->val; return; } sum -= root->val; backTrack(root->left, sum, flag); backTrack(root->right, sum, flag); sum += root->val; } }; |
| 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: bool hasPathSum(TreeNode *root, int sum) { bool flag = false; backTrack(root, sum, flag); return flag; } void backTrack(TreeNode *root, int sum, bool &flag) { if (!root->left && !root->right->left && !root->left && !root->right->right) { return; } if (!root->left && !root->right) { sum -= root->val; if (sum == 0) { flag = true; } sum += root->val; return; } sum -= root->val; backTrack(root->left, sum, flag); backTrack(root->right, sum, flag); sum += root->val; } }; |
| 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: bool hasPathSum(TreeNode *root, int sum) { bool flag = false; backTrack(root, sum, flag); return flag; } void backTrack(TreeNode *root, int sum, bool &flag) { if (0 <= root) { return; } if (!root->=left && !root->=right) { sum -= root->val; if (sum == 0) { flag = true; } sum += root->val; return; } sum -= root->val; backTrack(root->left, sum, flag); backTrack(root->right, sum, flag); sum += root->val; } }; |
答案:
- #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:
- bool hasPathSum(TreeNode *root, int sum)
- {
- bool flag = false;
- backTrack(root, sum, flag);
- return flag;
- }
- void backTrack(TreeNode *root, int sum, bool &flag)
- {
- if (!root)
- {
- return;
- }
- if (!root->left && !root->right)
- {
- sum -= root->val;
- if (sum == 0)
- {
- flag = true;
- }
- sum += root->val;
- return;
- }
- sum -= root->val;
- backTrack(root->left, sum, flag);
- backTrack(root->right, sum, flag);
- sum += root->val;
- }
- };
给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。
进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗?
示例 1:

输入:root = [1,3,null,null,2] 输出:[3,1,null,null,2] 解释:3 不能是 1 左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树有效。
示例 2:

输入:root = [3,1,4,null,null,2] 输出:[2,1,4,null,null,3] 解释:2 不能在 3 的右子树中,因为 2 < 3 。交换 2 和 3 使二叉搜索树有效。
提示:
[2, 1000] 内-231 <= Node.val <= 231 - 1以下程序实现了这一功能,请你填补空白处内容:
- #include <bits/stdc++.h>
- using namespace std;
- struct TreeNode
- {
- int val;
- TreeNode *left;
- TreeNode *right;
- TreeNode() : val(0), left(nullptr), right(nullptr) {}
- TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
- TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
- };
- class Solution
- {
- public:
- void recoverTree(TreeNode *root)
- {
- dfs(root);
- int tmp = p0_->val;
- p0_->val = p1_->val;
- p1_->val = tmp;
- }
- private:
- int wrong_ = 0;
- TreeNode *prev_ = nullptr;
- TreeNode *p0_ = nullptr;
- TreeNode *p1_ = nullptr;
- void dfs(TreeNode *root)
- {
- if (root == nullptr || wrong_ == 2)
- {
- return;
- }
- _____________________;
- }
- };
| A | dfs(root->left); if (prev_ != nullptr && prev_->val > root->val) { if (++wrong_ == 1) { p0_ = prev_; p1_ = root; } else if (wrong_ == 2) { p1_ = root; } } prev_ = root; dfs(root->right); |
| B | dfs(root->right); if (prev_ != nullptr && prev_->val > root->val) { if (++wrong_ == 1) { p0_ = prev_; p1_ = root; } else if (wrong_ == 2) { p1_ = root; } } prev_ = root; dfs(root->left); |
| C | dfs(root->right); if (prev_ != nullptr && prev_->val > root->val) { if (++wrong_ == 1) { p0_ = prev_; p1_ = root; } } prev_ = root; dfs(root->left); |
| D | dfs(root->left); if (prev_ != nullptr && prev_->val > root->val) { if (++wrong_ == 1) { p0_ = prev_; p1_ = root; } } prev_ = root; dfs(root->right); |
答案:
- dfs(root->left);
- if (prev_ != nullptr && prev_->val > root->val)
- {
- if (++wrong_ == 1)
- {
- p0_ = prev_;
- p1_ = root;
- }
- else if (wrong_ == 2)
- {
- p1_ = root;
- }
- }
- prev_ = root;
- dfs(root->right);