题目一:统计区间内数字 2 的个数
解题思路
将区间里面的数依次取模 10(%)、除 10,作用是大于等于 10 的数单独拆开(如 123,依次拆开为 3,2,1),判断是否等于 2,如果是就 count++;最后 count 数值为所求。
关键点:
- 一个数取模 10 后的数值等于其个位数上的数值(如:123 % 10 = 3)
- 一个数除 10 后的数值等于其去掉个位上的数的数值(如:123 / 10 = 12)
代码实现
#include <iostream>
using namespace std;
int main() {
int a, b; // 输入区间
int m; // 中间转换变量
int count = 0; // 计数
scanf("%d %d", &a, &b);
for (int i = a; i <= b; i++) {
int tmp = i;
while (tmp >= 2) {
m = tmp % 10;
if (m == 2) {
count++;
}
tmp /= 10;
}
}
cout << count;
}
题目二:求两个有序数组的交集
解题思路
先将这两个数组排序;创建一个 vector 变量 tmp,直接双重循环依次比较所有元素;然后分两种情况:
- tmp 为空时直接插入;
- tmp 不为空时要控制 tmp 中已有元素不再插入到 tmp 中。
代码实现
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* @param nums1 int 整型 vector
* @param nums2 int 整型 vector
* @return int 整型 vector
*/
vector<int> {
vector<> tmp;
(nums(), nums());
(nums(), nums());
( i = ; i < nums(); i++) {
( j = ; j < nums(); j++) {
(tmp.() && nums1[i] == nums2[j]) {
tmp.(nums1[i]);
}
(!tmp.() && nums1[i] == nums2[j] && nums1[i] != tmp[tmp.() - ]) {
tmp.(nums1[i]);
}
}
}
tmp;
}
};


