剑指offer每日一题【扑克牌中的顺子、1 + 2 + .. N、数值的整数次方】

在这里插入图片描述
扑克牌中的顺子.

/*
    解题思路:
    如果nums中存在重复的值那么肯定不是顺子,可以利用set的性质不会包含重复的key值,insert接口函数插入
    失败会返回pair对象,pair::second会被设置为false,利用这个特性筛选出来所有重复的序列把他pass掉
    大小王是可以表示任意数字的所以遇到大小王就直接忽略跳过,在不断将值插入到set容器中选出最大值和最小
    值,如果最大小减去最小值的结果小于5那么这个序列就是顺子

*/

class Solution {
public:
    bool isStraight(vector<int>& nums) {

        set<int> s;
        int maxi = -1,  mini = 14;
        for(auto &ref : nums)
        {
            if(ref == 0) continue;//遇到大小王就跳过
            if((s.insert(ref)).second == false ) return false;  
            //如果遇到重复包含的值那么就 返回 false
            s.insert(ref) ;
            maxi = max(maxi, ref);  //记录最大牌
            mini = min(mini, ref);  //记录最小牌

        }
        return maxi - mini < 5;  //如果最大值减去最小值的结果小于5那么该序列就是顺子
    }
};

在这里插入图片描述
求1+2+…+n.

class Solution {
public:
    int sumNums(int n) {
        char t[n][n+1]; //char是一字节 , n = 10  n * n+1 = 110
        return sizeof(t)>>1; //110字节/ 2 = 55 , ok
    }
};

递归写法

class Solution {
public:
    int sumNums(int n) {
       int ans = n;
       n > 0 && (ans += sumNums(n - 1)); //利用短路与的性质递归计算
      return ans;  
    }
};

在这里插入图片描述

数值的整数次方.

class Solution {
public:
    double myPow(double x, int n) {
       double ans = 1;
        for(long k = abs(long(n)); k > 0; k >>= 1) //防止溢出的做法是做整形提升
        {
            if(k & 1) ans *= x; //k为奇数时会多出来一个乘项x
             x *= x;
        }
             
        if(n < 0) ans = 1 / ans; //考虑n为负数的情况
        return ans;
    }   
};
### 安装最新版CUDA 对于希望安装最新版CUDA的用户,建议按照官方指南操作以确保最佳兼容性和稳定性。在开始之前,确认计算机当前支持的CUDA版本非常重要。这可以通过命令提示符中的`nvidia-smi`命令来完成,在返回的信息中表格右上角会显示所使用的显卡可以适配的最高CUDA版本[^2]。 #### 下载CUDA Toolkit 访问[NVIDIA官方网站](https://developer.nvidia.com/cuda-downloads),选择适合的操作系统、架构和其他必要参数后点击下载按钮获取最新的CUDA工具包。注意,有时为了获得更好的稳定性,可以选择稍微低于最大支持版本的一个版本进行安装[^1]。 #### 卸载旧版本CUDA(如果有) 如果已经安装了较早版本的CUDA,则应先卸载这些旧版本。具体方法取决于操作系统;对于Linux系统来说,通常涉及移除现有软件包以及清理残留文件等步骤。务必仔细阅读相关文档以防止误删重要组件。 #### 配置环境变量 成功安装新版本之后,还需要适当调整系统的PATH和LD_LIBRARY_PATH等环境变量设置,使得编译器及其他应用程序能够找到新的库位置。此过程同样依赖于具体的平台差异而有所不同[^3]。 #### 测试安装是否成功 最后一步是对刚刚完成的新安装执行简单的验证程序,比如运行一些示例代码或者尝试构建项目来看看是否存在任何链接错误等问题。NVIDIA提供了多种方式来进行这项工作,包括但不限于使用nvcc编译器自带的例子。 ```bash # 编译并运行一个简单的CUDA C++例子 $ nvcc -o vectorAddition vectorAddition.cu $ ./vectorAddition ``` #### cuDNN 的安装 由于cuDNN是深度学习框架的重要组成部分之一,因此也需要特别关注其正确安装。首先需注册成为开发者成员才能从NVIDIA网站合法获取所需资源。接着依据个人需求挑选对应CUDA版本号的cuDNN压缩包,并依照说明将其放置到相应目录下。 ```bash tar -xvzf cudnn-<version>-linux-x64-v<revision>.tgz sudo cp cuda/include/cudnn*.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn* ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱生活,爱代码

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值