听说互联网不卡35岁了?

文摘   2024-11-30 14:08   湖北  
这是苍何的第 241 篇原创!

大家好呀,我是苍何。

网上看到个逆天的帖子,说互联网现在不卡 35 岁了,直接提前到 32 岁了,真是开了眼。

本来我觉得这玩意也就是网友发着玩吧,赚点流量?但当我打开评论区一看,直接就炸开了锅。

大家纷纷匿名爆料出各种卡年轻的公司,更有甚者,说卡 32 算什么,直接卡 28,这是打算用完应届生身份就丢吗?

具体真实性不好说,但现实很多公司都需要有经验的选手,又想你有个 10 年的经验,又不想你的年龄到 35,这里的经验还不是单纯的工作年限,而是在某一个行业的经验。

比如干金融的,希望找个干了  5 年金融的程序员,年龄不超过 28,因为是纯开发嘛,年龄大了他们会觉得没有年轻人能熬,能加班。

所以同一份简历,即使你背景再优秀,年龄到那里了,自然比不过小年轻,不光薪资要的低,还愿意加班,听话。

我在想退休推迟了,鼓励老年人再就业,那 35 岁到退休这段时间,该何去何从,明明就是而立之年,空有一腔抱负,却无法施展。

不会真的只有吉祥三宝(保安、保洁、保姆)和铁人三项(外卖、滴滴、快递)才是归宿吧?

我们程序员这个行业,年龄 bug 更为严重,我们组内小年轻明显就感觉更能卷,有一晚干到两点,第二天继续撸代码,换做是现在的我,不得废掉半条老命好半天缓不过来。

我今天还和老婆说,等实在干不下去了,就自己租个摊子,干起卖铁板豆腐的行当,实在不行,回老家,传承老爸吹唢呐的技能,在红事白事间,诉说人生大喜与大悲。

经常群里有人问,该怎么办呀,某某公司又优化人了,没工作该怎么办啊?要是轮到我该怎么办啊?

是挺焦虑的,我也不喜欢传播焦虑,但你要问该怎么办?没太多办法,我觉得啊,省省钱,少些欲望,佛系些,等待周期变化,不下牌桌,等待就好,花总会开的

好啦,关于卡年龄这事,你怎么看?欢迎评论区讨论。

...

回归主题。

今天来一道所有年龄的人都能做出的的一道面试算法题,给枯燥的牛马生活加加油😂。

题目描述

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

回文数 是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

例如:

  • 121 是回文数,而 123 不是。


示例 1:

输入:

x = 121

输出:

true

示例 2:

输入:

x = -121

输出:

false

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


示例 3:

输入:

x = 10

输出:

false

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


提示:

  • -2³¹ <= x <= 2³¹ - 1


解题思路

  1. 数字转字符串法:

  • 将数字转换为字符串,然后直接判断字符串是否是回文。

  • 简单易实现,但需要额外的字符串空间。

  • 反转整数法:

    • 不转换为字符串,直接通过数学运算反转整数。

    • 如果反转后的整数与原整数相等,则是回文数。

    • 为避免整数溢出,只反转一半的数字。

    优化数学方法:

    • 对于负数,直接返回 false,因为负数不可能是回文数。

    • 对于末尾为 0 且不为 0 的数字,也返回 false,因为这种情况的整数不可能是回文数。

    • 将数字一半反转后,判断原始数字的前半部分是否与反转后的部分相等。


    代码实现

    Java 实现

    public class PalindromeNumber {
    public boolean isPalindrome(int x) {
    // 负数和以 0 结尾的非零数字不是回文数
    if (x < 0 || (x % 10 == 0 && x != 0)) {
    return false;
    }

    int reversedNumber = 0;
    int original = x;

    // 反转数字
    while (x > 0) {
    reversedNumber = reversedNumber * 10 + x % 10;
    x /= 10;
    }

    // 比较反转后的数字和原始数字
    return original == reversedNumber;
    }

    public static void main(String[] args) {
    PalindromeNumber solution = new PalindromeNumber();
    System.out.println(solution.isPalindrome(121)); // 输出 true
    System.out.println(solution.isPalindrome(-121)); // 输出 false
    System.out.println(solution.isPalindrome(10)); // 输出 false
    }
    }

    C++ 实现

    #include <iostream>
    using namespace std;

    class Solution {
    public:
    bool isPalindrome(int x) {
    // 负数和以 0 结尾的非零数字不是回文数
    if (x < 0 || (x % 10 == 0 && x != 0)) {
    return false;
    }

    int reversedNumber = 0;
    int original = x;

    // 反转数字
    while (x > 0) {
    reversedNumber = reversedNumber * 10 + x % 10;
    x /= 10;
    }

    // 比较反转后的数字和原始数字
    return original == reversedNumber;
    }
    };

    int main() {
    Solution solution;
    cout << solution.isPalindrome(121) << endl; // 输出 1 (true)
    cout

    << solution.isPalindrome(-121) << endl; // 输出 0 (false) cout << solution.isPalindrome(10) << endl; // 输出 0 (false) return 0; }


    ---

    ### Python 实现
    ```python
    class Solution:
    def isPalindrome(self, x: int) -> bool:
    # 负数和以 0 结尾的非零数字不是回文数
    if x < 0 or (x % 10 == 0 and x != 0):
    return False

    reversed_number = 0
    original = x

    # 反转数字
    while x > 0:
    reversed_number = reversed_number * 10 + x % 10
    x //= 10

    # 比较反转后的数字和原始数字
    return original == reversed_number


    # 测试用例
    solution = Solution()
    print(solution.isPalindrome(121)) # 输出 True
    print(solution.isPalindrome(-121)) # 输出 False
    print(solution.isPalindrome(10)) # 输出 False

    复杂度分析

    1. 时间复杂度:O(log₁₀(x))

    • 反转数字时,循环次数与数字的位数成正比。一个 n 位数的循环次数为 n。

  • 空间复杂度:O(1)

    • 只使用了常数额外空间来存储变量。

    ending

    你好呀,我是苍何。是一个每天都在给自家仙人掌讲哲学的执着青年,我活在世上,无非想要明白些道理,遇见些有趣的事。倘能如我所愿,我的一生就算成功。共勉 💪

    点击关注下方账号,你将感受到一个朋克的灵魂,且每篇文章都有惊喜。

    感谢大家一直以来的阅读、在看和转发,我会把流量主收益都用来发红包,大家可在公众号页面发送相关暗号关键词获取抽奖,每一篇文章会给到一个不同的暗号,对应的抽奖都是独立的,此篇暗号为【35】,在后台回复【35】,即可点击进去参与抽奖!抽奖内容、金额、个数等都无变化,在开奖前参与抽奖,操作均有效。

    注意,后台(不是评论区,是后台)回复【35】即可参与抽奖。
    后台回复(不是评论区,是后台)即可参与抽奖。
    后台回复(不是评论区,是后台)即可参与抽奖。

    就像大家之前回复【八股】一样。

    【我爱这个魔幻的世界】

    苍何
    独立开发者,专注于Java企业级开发,AI 工具提效。偶尔闪光、经常表达、总是真诚。
     最新文章