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

目录

求奇数的乘积

数值统计

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

猜数字

拿硬币

值相等的最小索引

最大连续1的个数

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

数组中两元素的最大乘积

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

K个元素的最大和

等差三元组的数目

移除元素

基于排列构建数组

数组串联


求奇数的乘积

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

数值统计

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

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

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

猜数字

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

拿硬币

class Solution {
public:
    int minCount(vector& coins) {
        int res=0;
        for(int i=0;i

值相等的最小索引

class Solution {
public:
    int smallestEqual(vector& nums) {
        for(int i=0;i

最大连续1的个数

class Solution {
public:
    int findMaxConsecutiveOnes(vector& 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的数对数目

class Solution
{
public:
    int countKDifference(vector &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;
    }
};

数组中两元素的最大乘积

class Solution {
public:
    int maxProduct(vector& nums) {
        sort(nums.begin(),nums.end());
        return (nums[nums.size()-1]-1)*(nums[nums.size()-2]-1);
    }
};

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

class Solution {
public:
    int differenceOfSum(vector& nums) {
        int yuansu=0;
        int shuwei=0;
        for(int i=0;i

K个元素的最大和

class Solution {
public:
    int maximizeSum(vector& nums, int k) {
        int res=0;
        int m=nums[0];
        for(int i=0;i

等差三元组的数目

class Solution {
public:
    int arithmeticTriplets(vector& nums, int diff) {
        int res=0;
        for(int i=0;i

移除元素

快慢双指针

class Solution {
public:
    int removeElement(vector& 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;
    }
};

基于排列构建数组

class Solution {
public:
    vector buildArray(vector& nums) {
        vector s(nums.size());
        for(int i=0;i

数组串联

class Solution {
public:
    vector getConcatenation(vector& nums) {
        vector s(nums.size()*2);
        for(int i=0;i

基础数据结构第03天:顺序表(实战篇)_第1张图片

你可能感兴趣的:(基础数据结构集训,数据结构,算法,c++)