1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

2021.05.11 算法题:回文数

题目来源:力扣(LeetCode

链接:https://leetcode-cn.com/problems/palindrome-number

难度:简单

题目描述

给你一个整数 x,如果 x 是一个回文整数,返回 true;否则,返回 false

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而 123 不是。

示例 1:

输入:x = 121
输出:true

示例 2:

输入:x = -121
输出:false

解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:

输入:x = 10
输出:false

解释:从右向左读, 为 01 。因此它不是一个回文数。
示例 4:

输入:x = -101
输出:false

提示:

-231 <= x <= 231 - 1

第一次提交

看完这个题,特别是用例和结果,我发现和昨天分享的那中解法,刚好也可以用到这里,所以很多,我有了第一种解法:

class Solution {
    public boolean isPalindrome(int x) {
            if (x < 0) {
                return false;
            }
            int n = 0;
            int temp = x;
            while (x != 0) {
                n = n * 10 + x % 10;
                x = x / 10;
            }
            return n == temp;
        }
}

从提交结果来看,还是挺不错的。我们来简单说下思路,根据题目描述,回文数特点有一下几点:

  • 正序和反序(反转)数值一样
  • 负数都不是回文数

所以第一种解法就是将目标数反转,先判断是否为负数,负数直接返回false,然后计算目标数值的反转数,比较反转前和反转后是否一致,一致就是回文数,否则就不是

第二次提交

其实,第二次可能是大部分人的思路(包括我),如果不是刚做完整数反转,那我可能也这么做了:

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }
        boolean isPalindrome = false;
        String xStr = String.valueOf(x);
        char[] chars = xStr.toCharArray();
        for (int i = 0; i <= chars.length / 2; i++) {
            isPalindrome = (chars[i] == chars[chars.length -1 -i]);
            if (!isPalindrome) {
                return isPalindrome;
            }
        }
        return isPalindrome;
    }
}

提交结果和第一次差不多,但是时间上比第一次长了一点。这里的思路就很简单了,就是挨个比较,比较数字长度的一半就可以:

简单优化

把上面的代码做了一些简单的优化修改,内存消耗方面有了较大的提升:

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }
        char[] chars = String.valueOf(x).toCharArray();
        for (int i = 0; i <= chars.length / 2; i++) {
            if (!(chars[i] == chars[chars.length -1 -i])) {
                return false;
            }
        }
        return true;
    }
}

当然如果从代码的可读性上讲,第一种会比第二种更好,但是算法往往是考虑性能的是,所以如果单纯从算法角度来说,第二种更好。

总结

算法问题永远不会是唯一解,解决问题的关键在于你要有正确的解题思路,而思路的建立又依托于你对问题的建模能力(抽象化思维),建模能力又是靠不断地解决问题积累的,总结下就是算法考察的是你的逻辑思维(数学能力)和抽象化思维(实际问题抽象成模型,将问题与模型匹配,选择更合适的模型),看你是否可以将这两者很好的结合,写出最优解,毕竟日常工作中,一切业务逻辑本质上都是算法,一切业务逻辑的实现过程就是建立算法的过程,所以算法能力就是你编程能力的体现。

作为一个开发工程师,算法能力是最基本但特别重要的能力,这个能力和语言、系统、环境无关无关的,但很大程度上决定了你在这个行业能走多远,毕竟大厂对于算法都是有要求的,如果你的算法能力很差,没人会相信你能写出好代码。好了,今天就到这里吧,一定要坚持学习哦!

项目路径:

https://github.com/Syske/example-everyday

本项目会每日更新,让我们一起学习,一起进步,遇见更好的自己,加油呀

posted @ 2021-05-12 08:27  云中志  阅读(175)  评论(0编辑  收藏  举报