基础数据结构第03天:顺序表(实战篇)

目录

求奇数的乘积

数值统计

青年歌手大奖赛_评委会打分

猜数字

拿硬币

值相等的最小索引

最大连续1的个数

差的绝对值为K的数对数目

数组中两元素的最大乘积

数组元素和与数字和的绝对差

K个元素的最大和

等差三元组的数目

移除元素

基于排列构建数组

数组串联


求奇数的乘积

cpp 复制代码
#include <iostream>
using namespace std;
int main()
{
    int t;
    while (cin >> t)
    {
        int s = 1;
        int k;
        while (t--)
        {
            cin >> k;
            if (k % 2)
            {
                s *= k;
            }
        }
        cout << s << endl;
    }
    return 0;
}

数值统计

cpp 复制代码
#include <iostream>
using namespace std;
int main()
{
    int t;
    while (cin >> t)
    {
        if (t == 0)
        {
            break;
        }
        int a = 0;
        int b = 0;
        int c = 0;
        double k;
        while (t--)
        {
            cin >> k;
            if (k < 0)
            {
                a++;
            }
            else if (k > 0)
            {
                c++;
            }
            else
            {
                b++;
            }
        }
        cout << a << " " << b << " " << c << endl;
    }
    return 0;
}

青年歌手大奖赛_评委会打分

cpp 复制代码
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int k;
    while (cin >> k)
    {
        double s = 0;
        double MAX = 0;
        double MIN = 100;
        double t;
        int p = k;
        while (p--)
        {
            cin >> t;
            s += t;
            MAX = max(MAX, t);
            MIN = min(MIN, t);
        }
        s = s - MAX - MIN;
        s = s / (k - 2);
        printf("%.2llf\n", s);
    }
    return 0;
}

猜数字

cpp 复制代码
class Solution {
public:
    int game(vector<int>& guess, vector<int>& answer) {
        int res = 0;
        for (int i = 0; i < 3; i++) {
            if (guess[i] == answer[i])
                res++;
        }
        return res;
    }
};

拿硬币

cpp 复制代码
class Solution {
public:
    int minCount(vector<int>& coins) {
        int res=0;
        for(int i=0;i<coins.size();i++){
            if(coins[i]%2==1){
                res++;
                coins[i]--;
            }
            res+=coins[i]/2;
        }
        return res;
    }
};

值相等的最小索引

cpp 复制代码
class Solution {
public:
    int smallestEqual(vector<int>& nums) {
        for(int i=0;i<nums.size();i++){
            if(i%10==nums[i]){
                return i;
            }
        }
        return -1;
    }
};

最大连续1的个数

cpp 复制代码
class Solution {
public:
    int findMaxConsecutiveOnes(vector<int>& nums) {
        int res = 0;
        int sum = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] == 1) {
                sum++;
                res = max(res, sum);
            } else {
                sum = 0;
            }
        }
        return res;
    }
};

差的绝对值为K的数对数目

cpp 复制代码
class Solution
{
public:
    int countKDifference(vector<int> &nums, int k)
    {
        int res = 0;
        for (int i = 0; i < nums.size(); i++)
        {
            for (int j = i + 1; j < nums.size(); j++)
            {
                if (abs(nums[i] - nums[j]) == k)
                    res++;
            }
        }
        return res;
    }
};

数组中两元素的最大乘积

cpp 复制代码
class Solution {
public:
    int maxProduct(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        return (nums[nums.size()-1]-1)*(nums[nums.size()-2]-1);
    }
};

数组元素和与数字和的绝对差

cpp 复制代码
class Solution {
public:
    int differenceOfSum(vector<int>& nums) {
        int yuansu=0;
        int shuwei=0;
        for(int i=0;i<nums.size();i++){
            yuansu+=nums[i];
            while(nums[i]){
                shuwei+=nums[i]%10;
                nums[i]/=10;
            }
        }
        return abs(yuansu-shuwei);
    }
};

K个元素的最大和

cpp 复制代码
class Solution {
public:
    int maximizeSum(vector<int>& nums, int k) {
        int res=0;
        int m=nums[0];
        for(int i=0;i<nums.size();i++){
            m=max(m,nums[i]);
        }
        for(int i=0;i<k;i++){
            res=res+m+i;
        }
        return res;
    }
};

等差三元组的数目

cpp 复制代码
class Solution {
public:
    int arithmeticTriplets(vector<int>& nums, int diff) {
        int res=0;
        for(int i=0;i<nums.size();i++){
            for(int j=i+1;j<nums.size();j++){
                if(nums[j]-nums[i]==diff){
                    for(int k=j+1;k<nums.size();k++){
                        if(nums[k]-nums[j]==diff){
                            res++;
                        }
                    }
                }
            }
        }
        return res;
    }
};

移除元素

快慢双指针

cpp 复制代码
class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int slow = 0;
        for (int fast = 0; fast < nums.size(); ++fast) {
            if (nums[fast] != val) {
                nums[slow] = nums[fast];
                slow++;
            }
        }
        return slow;
    }
};

基于排列构建数组

cpp 复制代码
class Solution {
public:
    vector<int> buildArray(vector<int>& nums) {
        vector<int> s(nums.size());
        for(int i=0;i<nums.size();i++){
            s[i]=nums[nums[i]];
        }
        return s;
    }
};

数组串联

cpp 复制代码
class Solution {
public:
    vector<int> getConcatenation(vector<int>& nums) {
        vector<int> s(nums.size()*2);
        for(int i=0;i<nums.size();i++){
            s[i]=nums[i];
            s[i+nums.size()]=nums[i];
        }
        return s;
    }
};
相关推荐
小蝙蝠侠23 分钟前
安德烈·卡帕西:深入探索像ChatGPT这样的大语言模型内容列表
人工智能·算法·机器学习
闻缺陷则喜何志丹32 分钟前
【贪心之临项交换】P8732 [蓝桥杯 2020 国 ABC]|普及
c++·算法·蓝桥杯·贪心·洛谷
charlie11451419133 分钟前
理解C++20的革命特性——协程支持1
c++·学习·c++20·协程·语言特性·调度·现代c++
而后笑面对1 小时前
关于力扣2025.10.4每日 11.盛最多雨水的容器
算法·leetcode·职场和发展
郝学胜-神的一滴1 小时前
Effective STL 第1条:慎重选择容器类型
开发语言·c++·程序人生·软件工程
UrbanJazzerati1 小时前
考研数学:数轴根法(穿根法)——高效求解高次不等式的利器
算法
可触的未来,发芽的智生1 小时前
新奇特:负权重橡皮擦,让神经网络学会主动遗忘
人工智能·python·神经网络·算法·架构
zl_dfq1 小时前
数据结构 之 【LRU Cache】(注意list的splice接口函数)
数据结构
【正弦】1 小时前
list的模拟实现
数据结构·list
阿明61 小时前
list模拟实现(简单版)【C++】
开发语言·c++·学习·list