leetcode题解持续更新

并没有按照顺序五题五题做…

这次忙着复习,就只写了四道啦,等过了考试周一定一定补起来

7. Reverse Integer

这题真的是蛮坑的…
题意:很直接明了,给定一个int类型的数字,求这个数字反转过后的数字。
解题过程:一开始直接就想着说不断地取原数字n的最后一位,然后放在循环里面,每次*10+n%10,然后n再/=10,也就是如下的WA代码——

class Solution {
public:
    int reverse(int x) {
    if(x==0)
        return 0;
    int num=0,n=abs(x);
    while(n>0)
    {
        num = num*10 + n%10;
        n /= 10;
    }
    if(x<0)
        return 0-num;
    else
        return num;
}
};

然后就会各种报错,Runtime error,这个看错误不难发现是因为他所给的都是int类型的数据,反转以后很容易超出这个范围,所以要用long long类型,而且认真读题会发现他说如果不是int类型的数字就要返回0,所以也就是最后的时候要判断是不是int类型。

AC代码——

class Solution {
public:
    int reverse(int x){
    if(x==0)
        return 0;
    long long num=0;
    while(x!=0)
    {
        num = 10*num + x%10;
        x /= 10;
    }
    return (num < INT_MIN || num > INT_MAX) ? 0 : num;
}
};

11. Container With Most Water

在这里插入图片描述
题意:求选取哪两个边能使容器中容量最大,容器的边选的是最小的边。
解题过程:我一开始用的是暴力,想看一下这样子要多久,然后果然和双指针的方法差的不是一点点…几乎所占用的内存以及运行时间都是很多倍。复杂度更小的算法就是采用双指针,然后移动其中的小边,因为一个容器如果要让容量最大的话,肯定是考虑从两边开始,然后保持高的那个边,去移动那个小的边,这样就会快得多。
暴力:

class Solution {
public:
    int maxArea(vector<int>& height) {
    int most = 0,n = height.size(),temp;
    //先写一个n平方复杂度的
    for(int i=0; i<n; i++)
    {
        for(int j=i; j<n; j++)
        {
            temp = (j-i)*min(height[i],height[j]);
            if(temp>most)
                most = temp;
        }
    }
    return most;
}
};

简便的双指针操作——

class Solution {
public:
    int maxArea(vector<int>& height) {
    //用双指针,然后移动两个指针中数值小的那一个
    int l=0,r = height.size()-1,maxArea=0;
    while(l<r)
    {
        if((r-l)*min(height[r],height[l])>maxArea)
            maxArea = (r-l)*min(height[r],height[l]);
        if(height[r]>height[l])
            l++;
        else
            r--;
    }
    return maxArea;
}
};

9. Palindrome Number

题意:这个很容易理解,就是判断它是不是一个回文数字,符号参与判断。
解题过程:所以一开始就可以解决0和负数,0按照题目要求是回文数字,而所有的负数都不是回文数字。然后在判断的时候,有一种解思路是将原数字反过来,然后判断反过来的数字和原数字是否相同,但是其实会发现,这样子的话很容易出现溢出问题,所以不必要用这样的操作,可以算一位判断一位。
WA代码——

class Solution {
public:
    bool isPalindrome(int x) {
        //算出x的倒置数a,比较a是否和x相等就行了
        int a = 0, b = x;
        while(b > 0){
            a = a * 10 + b % 10;
            b /= 10;
        }
        if(a == x)
            return true;
        else
            return false;
        
    }
};

AC代码——

class Solution {
public:
    bool isPalindrome(int x) {
        
        //负数
        if(x < 0)
            return false;    
        int len = 1;
        while(x / len >= 10)
            len *= 10;
        while(x > 0)    {
            //头和尾
            int left = x / len;
            int right = x % 10;
            if(left != right)
                return false;
            else    {
                //把头尾去掉
                x = (x % len) / 10;
                len /= 100;
            }
        }
        return true;
    }
};

原来我只写了三题…有一题还没写出来我给记错了…最近组成原理好多东西要记,下周一定补上来!!

有关docker部分

说到这个就有底气多了,这个部分花了挺多时间的,一开始在实验室的那台电脑上安装一点问题都没有,很快的就都下载完成然后开始做MySQL的部分了,但是在自己的Linux系统中,真的好麻烦——

我是照着一个博客敲命令行的:博客地址
但有一些问题…

  1. yum仓库添加位置
sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'

可能是我使用的操作系统是deepin的原因?总之我的目录布局不是这样的,要改成sudo tee /etc/yum/repos.d/docker.repo <<-‘EOF’,所以在步骤“添加yum仓库”的时候也要改一下。

  1. 镜像来源不行
sudo yum install -y docker-engine

可能是国内访问不到docker官方镜像,网站完全打不开,返回404,然后需要更换镜像。然后借此机会,我熟练掌握了如何连外网~ 网芸链接,然后用里面的sstap就好啦!

  1. 换一个教程

后面我发现,直接docker官网上面就有很详细说明以及如何安装的教程,链接——官网教程

以及如何安装之后如何在MySQL中添加值,也直接有现成的教程——菜鸟教程的在MySQL中插入数据
实现的效果——(这里直接截取菜鸟教程里面的图片,由于是在实验室的电脑实现的,所以没有截图)
在这里插入图片描述

最后,革命之路还很长呀!加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值