C++每日一练:最长递增区间 && 阿波罗的魔力宝石 && 投篮

文章介绍了三个编程问题的解决方案,包括求最长递增区间、实现阿波罗的魔力宝石(冒泡排序变种)以及解决投篮问题,这些问题的代码实现均涉及到数组操作和比较。冒泡排序部分强调了在数据部分有序时的优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

今天的题太简单,甚至 “最长递增区间” 和 “投篮” 就是一个问题。实在没事干,也给做了!直接上代码算了…

在这里插入图片描述


提示:以下是本篇文章正文内容

一、最长递增区间

代码如下:

#include <iostream>
#include <string>
#include <sstream>
#include <vector>

int solution(int n, std::vector<int>& vec){
    int result=1;
    // TODO:
    int count = 1;
    for (size_t i=0; i<vec.size(); ++i){
        if (vec[i+1] > vec[i]){
            count++;
        }else {
            result = (count > result) ? count : result;
            count = 1;
        }
    }
    return result;
}

注意点就是默认值为1。

二、阿波罗的魔力宝石

代码如下:

#include <iostream>
#include <string>
#include <sstream>
#include <vector>

using namespace std;
std::vector<int> solution(int n, std::vector<int>& vec){
    std::vector<int> result;
    // TODO:
    for(int i=0; i<n; ++i){
        for (int j=0; j<n-i; ++j){
            if(vec[j+1] < vec[j] && j+1 < n){
                int tmp = vec[j];
                vec[j] = vec[j+1];
                vec[j+1] = tmp;
            }
        }
    }
    result = vec;
    return result;
}

很简单的冒泡排序,没加flag。

三、投篮

代码如下:

#include <iostream>
#include <string>
#include <sstream>
#include <vector>

int solution(int n, std::vector<int>& vec){
    int result = 1;
    // TODO:
    int count = 1;
    for (size_t i=0; i<vec.size(); ++i){
        if (vec[i+1] > vec[i] && vec[i+1] <= vec[i]+3){
            count++;
        }else {
            result = (count > result)? count : result; 
            count = 1;
        }
    }
    return result;
}

这简直和第一题一模一样!我估计条件写一样也能过。


总结

实在没什么好说的,初学者都能看明白的问题。
不过冒泡排序还是比较值得一看的,这是经典排序法,虽然效率一般,但在数据是有序分布的时候,它还是很合用的,就是说数据本身是比较有序的,仅个别几个数据是乱的时候,给算法加个是否移动数据的标记,当一个循环没有移动数据即可停止循环!值得学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无证的攻城狮

如本文对您有用,大爷给打个赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值