基础数据结构第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;
    }
};
相关推荐
Chen—LSN7 分钟前
C语言——文件操作(2)
c语言·开发语言·c++·经验分享·笔记·算法·c#
纪念 22913 分钟前
C++类和对象(最终篇)
开发语言·c++
程序员yu29 分钟前
会编网络:别被入门教程骗了,Python实用能力不在语法本身
开发语言·python·学习·算法
Bruce_Liuxiaowei43 分钟前
Python 字典默认值完全指南:从 KeyError 到 defaultdict
开发语言·数据结构·python·字典
LuminousCPP1 小时前
从零开始学 C++(三):类和对象入门|从 struct 到 class,理解封装、对象与 this 指针
c++·笔记·学习·类和对象
郝学胜-神的一滴1 小时前
游戏引擎原理与实践 01:聊聊游戏引擎的前世今生
开发语言·c++·游戏引擎·产品运营·软件工程·产品经理·untiy
Allen_LVyingbo1 小时前
信息化部门在AI时代的编程转移路径分析(上)
人工智能·python·算法·健康医疗·数据库开发·时序数据库·数据库架构
七牛云行业应用1 小时前
Jev 报 401 / api_key_required 怎么解决:TypeSafe AI 官方错误码表与排查步骤
算法·github
晴天的雨.9922 小时前
【C++算法】三数之和
开发语言·c++·算法
pippocao2 小时前
王者荣耀日志组件BqLog 为何如此快之3——压缩日志执行路径优化
c++