并没有按照顺序五题五题做…
这次忙着复习,就只写了四道啦,等过了考试周一定一定补起来
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系统中,真的好麻烦——
我是照着一个博客敲命令行的:博客地址
但有一些问题…
- yum仓库添加位置
sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
可能是我使用的操作系统是deepin的原因?总之我的目录布局不是这样的,要改成sudo tee /etc/yum/repos.d/docker.repo <<-‘EOF’,所以在步骤“添加yum仓库”的时候也要改一下。
- 镜像来源不行
sudo yum install -y docker-engine
可能是国内访问不到docker官方镜像,网站完全打不开,返回404,然后需要更换镜像。然后借此机会,我熟练掌握了如何连外网~ 网芸链接,然后用里面的sstap就好啦!
- 换一个教程
后面我发现,直接docker官网上面就有很详细说明以及如何安装的教程,链接——官网教程
以及如何安装之后如何在MySQL中添加值,也直接有现成的教程——菜鸟教程的在MySQL中插入数据
实现的效果——(这里直接截取菜鸟教程里面的图片,由于是在实验室的电脑实现的,所以没有截图)