C++学习——顺序表(四)
文章目录
- 前言
- 一、最大连续1的个数
- 二、差的绝对值为K的数对数目
- 三、数组中两元素的最大乘积
- 四、数组元素和与数字和的绝对值的差
- 五、K个元素的最大和
- 六、等差三元组的数目
- 七、移除元素
前言
本文为《C++学习》的第14篇文章,今天通过Leetcode的几道题来熟悉顺序表的大小操作。
一、最大连续1的个数
485.最大连续1的个数
#include<algorithm>
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int maxcnt = 0;
int currcnt = 0;
for(size_t i =0; i < nums.size(); ++i){
if(nums[i] ==1){
currcnt++;
maxcnt = max(maxcnt, currcnt);
}
else currcnt = 0;
}
return maxcnt;
}
};
二、差的绝对值为K的数对数目
2006.差的绝对值为K的数对数目
#include<algorithm>
class Solution {
public:
int countKDifference(vector<int>& nums, int k) {
int cnt = 0;
for(size_t i = 0; i < nums.size(); ++i){
for(size_t j = 0; j < nums.size(); ++j){
if(i < j && abs(nums[i] - nums[j]) == k){
cnt++;
}
}
}
return cnt;
}
};
三、数组中两元素的最大乘积
1464.数组中两元素的最大乘积
#include<algorithm>
class Solution {
public:
int maxProduct(std::vector<int>& nums) {
if (nums.size() < 2) {
return 0; // 如果数组长度小于2,返回0(虽然根据题意这种情况不会发生)
}
// 对数组进行排序
sort(nums.begin(), nums.end());
// 最大的两个元素分别是最后一个和倒数第二个
int n = nums.size();
int max1 = nums[n - 1];
int max2 = nums[n - 2];
// 返回 (max1-1) * (max2-1)
return (max1 - 1) * (max2 - 1);
}
};
四、数组元素和与数字和的绝对值的差
2535.数组元素和与数字和的绝对值的差
class Solution {
public:
int differenceOfSum(vector<int>& nums) {
int element_sum = 0, num_sum = 0;
for(int num : nums){
element_sum += num;
int n = num;
while(n > 0){
num_sum += n % 10;
n /= 10;
}
}
return abs(element_sum - num_sum);
}
};
五、K个元素的最大和
2656.K个元素的最大和
class Solution {
public:
int maximizeSum(vector<int>& nums, int k) {
int maxscore = *max_element(nums.begin(), nums.end());
int score = 0;
for(int i = 0; i < k; ++i){
score += maxscore + i;
}
return score;
}
};
六、等差三元组的数目
2367.等差三元组的数目
class Solution {
public:
int arithmeticTriplets(std::vector<int>& nums, int diff) {
int count = 0;
for (size_t i = 0; i < nums.size(); ++i) {
for (size_t j = i + 1; j < nums.size(); ++j) {
if (nums[j] - nums[i] == diff) {
for (size_t k = j + 1; k < nums.size(); ++k) {
if (nums[k] - nums[j] == diff) {
count++;
}
}
}
}
}
return count;
}
};
七、移除元素
27.移除元素
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int k = 0;
for (int i = 0; i < nums.size(); ++i){
if (nums[i] != val){
nums[k++] = nums[i];
}
}
return k;
}
};
这就是今天的全部内容了,谢谢大家的观看,不要忘了给一个免费的赞哦!