当前位置: 首页 > news >正文

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;
    }
};

这就是今天的全部内容了,谢谢大家的观看,不要忘了给一个免费的赞哦!

相关文章:

  • SpringMVC (一)基础
  • 日志系统项目——准备工作了解类的设计模式如单例模式、工厂模式、代理模式
  • 图片隐写wp
  • 【eNSP实战】交换机和路由器配置链路聚合
  • 【MySQL】数据类型
  • API调用comfyui工作流,做一个自己的app,chatgpt给我写的前端,一键创建自己的卡通形象,附源码
  • 利用axios库的爬虫程序如何使用HTTP
  • 【Go | 从0实现简单分布式缓存】-7:增加etcd和gRPC功能
  • Windows控制台函数:设置区域属性函数FillConsoleOutputAttribute()
  • 静态路由配置实验相关过程
  • SOAP和REST的区别
  • 全方位 JVM 调优参数详解
  • 【BUG分析】微服务无法读取Nacos中的共享配置
  • MySQL事务及索引复习笔记
  • 笔记本电脑开机自动启用自定义电源计划方法
  • 利用java实现数据分析
  • FX-std::vector
  • 共享内存(System V)——进程通信
  • 计算机:基于深度学习的Web应用安全漏洞检测与扫描
  • Spark eventlog
  • 小米法务部:犯罪团伙操纵近万账号诋毁小米,该起黑公关案告破
  • 私家车跑“顺风”出事故,意外险赔不赔?
  • 武康大楼再开发:一栋楼火还不够,要带火街区“朋友圈”
  • 埃尔多安:愿在土耳其促成俄乌领导人会晤
  • 外企聊营商|威能集团:公平环境增“暖”意
  • 前四个月人民币贷款增加10.06万亿元,4月末M2余额同比增长8%