C++ 经典 OJ 编程题解析:Vector 应用与位运算技巧
一、杨辉三角
解题思路
利用 vector 的特性创建一个二维数组,通过观察得知杨辉三角的第 0 行第 0 列全为 1,其他位置元素的值都等于其上一行同列元素与上一行前一列元素的和。
代码实现
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> arr(numRows);
for (int i = 0; i < numRows; i++) {
arr[i].resize(i + 1, 1);
arr[i][0] = arr[i][i] = 1;
}
// 第一、二行的元素都是 1,从第 3 行,第 2 列开始循环
for (int i = 2; i < numRows; i++) {
for (int j = 1; j < i; j++) {
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
}
return arr;
}
};
二、删除有序数组中的重复项
解题思路
比较相邻的两个元素是否相等,若不相等则依次从原数组第二个位置(即变量 index,下标为 1)插入到原数组中。
代码实现
class Solution {
public:
int {
index = ;
( i = ; i < nums.() - ; i++) {
(nums[i] != nums[i + ]) {
nums[index] = nums[i + ];
index++;
}
}
index;
}
};


