ARTS-第4周-190408

Algorithm
Palindrome Number

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

Input: 121
Output: true
Example 2:

Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:

Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

Coud you solve it without converting the integer to a string?

检测一个 int 是否是回文数,就是颠倒顺序以后是和原来的数相等。首先有几种特殊情况直接排除掉:

  • 负数直接返回false
  • 大于等于0并且小于10的数直接返回true
  • 大于等于10的数,如果末位是0直接返回false(这条是在写代码时发现的)
public class Solution {
    public bool IsPalindrome(int x) {
        bool result = false;
            if (x > 10)
            {
                int y = 0;
                for (int i = 0; ; i++)
                {
                    int t = x % 10;
                    y = y * 10 + t;
                    x = x / 10;
                    if (i == 0 && y == 0)
                    {
                        break;
                    }
                    if (y == x || (y > 0 && (y * 10 + x % 10) == x))
                    {
                        result = true;
                        break;
                    }
                    else if (y > x || (y + x % 10) > x)
                    {
                        break;
                    }
                }
            }
            else if (x >= 0 && x < 10)
            {
                result = true;
            }
            return result;
    }
}

在检测的时候需要考虑到位数为偶数和奇数的情况,然后我自己增加了一个简单的判断,当从末位开始生成的数大于剩余部分的数,也就是遍历到了中间位置还没能满足条件就可以直接跳出循环。
Review

  • 这周看到一个视频,自己学习的10大方法(My Top 10 Learning Methods For Self Taught Developers),链接是:https://www.youtube.com/watch?v=raoOoWU7DI0
  • 视频前面介绍的学习网站有需要的可以了解下
  • 读书,概念相关的,编程相关的,例如 clean code
  • 音频书和podcasts,其中有介绍到的一个 Codepen radio,我自己看了下每期的主题还不错,不过英语还需要提高。
  • 写教程和博客,写教程的过程也是理论结合实践的过程,写博客更多的整理自己的知识点和思路。
  • 网上课堂学习,当了解一个新知识可以从 Free Code camp开始,其实就是从相关活跃的论坛或者社区开始。网上有的课程也是很系统的,不过我个人还没有在网上很系统的学习过,更多的是针对某个技能或者某种语言。
  • 多和其他人交流,朋友、同事。方式有很多种线上线下,或者社交活动。
  • 多运行code例子,在github上下载代码,运行代码,然后去查看和分析代码,对于感兴趣的项目可以和作者进行交流,或者贡献一份力量。
  • 视频教程
  • 有目的去学习,或者和结合实际项目去学习,这样更有动力。(视频中提到的:Udemy,Pluralsight,lynda.com)
  • 文档,官方的介绍文档等等
  • 通过学习创建一个属于自己的项目,用到你学到的内容。学习要有产出。
  • 每个人都有适合自己的学习方式,找到适合自己的方法就可以。

Tips&Share

  • 上周在本地安装 vscoder 的时候报错:缺少 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’和GLIBCXX_3.4.20,主要原因是 libstdc++.so.6 需要更新,在网上找了很多方法,直接用 yum update 不能解决问题,通过 find / -name “libstdc++.so*” 也没能找到更高版本的 so.6 文件。最后总结的基本方案是:先手动升级 gcc,然后再什么查找库文件,如果没有直接更新到系统中就需要通过下面的过程进行处理:

原文链接:https://www.linuxidc.com/Linux/2017-10/147621.htm
执行以下命令,查找编译gcc时生成的最新动态库:
find / -name “libstdc++.so*”
输出如下:
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.21 //最新动态库
/home/gcc-5.2.0/gcc-temp是升级gcc时的输出目录。
将上面的最新动态库libstdc++.so.6.0.21复制到/usr/lib64目录下:
cp /home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
复制后,修改系统默认动态库的指向,即:重建默认库的软连接。
切换工作目录至/usr/lib64:
cd /usr/lib64
删除原来软连接:
rm -rf libstdc++.so.6
将默认库的软连接指向最新动态库:
ln -s libstdc++.so.6.0.21 libstdc++.so.6
默认动态库升级完成。重新运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC

最后我直接更新了本地的系统,实在是比较老了。

  • u 盘安装centos7步骤:https://www.augsky.com/599.html 镜像下载地址(阿里):https://opsx.alibaba.com/mirror

主要分两步:下载镜像,使用UltraISO制作u盘安装工具;通过U盘安装centos
其中需要注意的是安装部分:在安装提示界面 按 tab 键,然后输入 :vmlinuz initrd=initrd.img Linux dd quiet 。查到u盘的盘符以后重启,然后在安装提示界面按 tab 键,输入vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb4 quiet。其中 “sdb4” 就是U盘对应的盘符。

  • 安装过程需要注意的地方:需要指定安装盘;默认是最小安装,需要自己选择安装的类型;默认网络是关闭,可以在安装界面设置网络打开。
  • 查看本机 centos 版本信息

原文链接:https://blog.csdn.net/shuaigexiaobo/article/details/78030008
我用这个方法:cat /etc/issue 查看版本,其他方法可以查看原文链接。

  • CentOS 各版本说明

以CentOS7.0 为例下载各版本说明(参考链接:https://blog.csdn.net/u011341352/article/details/82812054)
CentOS-7.0-1406-x86_64-DVD.iso 标准安装版,一般下载这个就可以了
CentOS-7.0-1406-x86_64-NetInstall.iso 网络安装镜像
CentOS-7.0-1406-x86_64-Everything.iso 对完整版安装盘的软件进行补充,集成所有软件。
CentOS-7.0-1406-x86_64-GnomeLive.iso GNOME桌面版
CentOS-7.0-1406-x86_64-KdeLive.iso KDE桌面版
CentOS-7.0-1406-x86_64-livecd.iso 光盘上运行的系统,类拟于winpe
(1)CentOS-xxxx-LiveCD.ios 和CentOS-xxxx-bin-DVD.iso有什么区别?
前者只有700M,后者有3.8G。其差别不仅仅在大小上,其更本质的差别是,CentOS-xxxx-LiveCD.ios只能加载到内存里运行,不能安装。CentOS-xxx-bin-DVD1.iso才可以安装到硬盘上。
(2)CentOS-xxx-bin-DVD1.iso,CentOS-xxx-bin-DVD2.iso分别是干什么的?
前者是3.8G,后者是500M。其差别是DVD1是CentOS的安装文件,DVD2是CentOS的一些软件(就简单实用CentOS来说是不需要的)。

  • 重新安装以后发现gcc还是需要升级,所以建议在docker上安装code-server,具体的安装方法github上有:https://github.com/codercom/code-server。 后续在学习docker的时候会试验下。
  • 关于 centos 初步学习的教程会在下个星期整理完成,一篇单独的文章。

你可能感兴趣的:(ARTS-第4周-190408)