Day 23 胜利属于达瓦里氏!
1. 剑指 Offer 39. 数组中出现次数超过一半的数字
思路: 排序过后 返回中间位置的数必定是众数
class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(), nums.end());
return nums[nums.size() / 2];
}
};
2.剑指 Offer 66. 构建乘积数组
思路 : 题目意思需要我们计算所有数的乘积并完成除以当前位置 更快捷的方法是对需要改造的数组 所枚举到的当前位置 对当前位置的赋值为 原来数组当前位置之前的所有数字的乘积 最后效果为 该位置为原数组左右所有数字的乘积 这样完成即可
class Solution {
public:
vector<int> constructArr(vector<int>& a) {
int n = a.size();
vector<int>res(n);
int p = 1;
for(int i = 0; i < n; i ++){
res[i] = p;
p *= a[i];
}
int q = 1;
for(int i = n - 1; i >= 0; i --){
res[i] *= q;
q *= a[i];
}
return res;
}
};