浦发银行今年的年终奖(含算法原题)

浦发银行年终奖?

最近因为年终奖上热搜的公司,大多数都是良心公司。

不少网友表示 不过来了,赶紧来个类似 广联达 那样的公司,对冲一下。

这不来了吗?

昨晚,某职场 App 上,一标题名为「传浦发银行不发年终奖,发一封家书」冲上热搜。

浦发银行今年的年终奖(含算法原题)_第1张图片

话题一出,迅速引发网友热议。

毕竟浦发银行可是老牌的全国性股份制商业银行,在业内有着不错的名气和风评。

不少奋斗在吃瓜一线的网友纷纷发帖求证:

浦发银行今年的年终奖(含算法原题)_第2张图片

但迎来的,却是"花式辟谣":

浦发银行今年的年终奖(含算法原题)_第3张图片

不少带着浦发银行员工职场认证标识的小伙伴表示,这家书"抵"的可不只是 1W,而是 5~10W 。

真的是让人又心疼又好笑。

甚至还有仅「浦发银行同事圈」可见的帖子被曝光:

浦发银行今年的年终奖(含算法原题)_第4张图片 浦发银行今年的年终奖(含算法原题)_第5张图片

真诗,真家书。

有才,实在是太有才了。

把浦发人逼急了,真的是要动手写诗的。

幽默归幽默,对于身处其中的小伙伴来说,可是实打实的钱。

浦发银行今年的年终奖(含算法原题)_第6张图片

我觉得现如今这个"内卷"被歌颂的时代,越来越多企业把「应当」当作了「恩赐」,说好的年终奖,那就是员工收入的一部分,说取消就取消,毫无契约精神。

对于这种企业,我觉得这位网友的做法就很正确:

浦发银行今年的年终奖(含算法原题)_第7张图片

在围城里的,争取早日逃脱,同时能救一个是一个。

...

回归主线。

做一道和银行相关的算法题(不是浦发银行的,毕竟不建议去

这是一道某国有行的面试题,题面有所不同,但解法和代码完全一致。

最近临近春节,会尽量给大家安排少动脑的题目。

题目描述

平台:LeetCode

题号:2520

给你一个整数 num,返回 num 中能整除 num 的数位的数目。

如果满足 nums % val == 0,则认为整数 val 可以整除 nums

示例 1:

输入:num = 7

输出:1

解释:7 被自己整除,因此答案是 1 。

示例 2:

输入:num = 121

输出:2

解释:121 可以被 1 整除,但无法被 2 整除。由于 1 出现两次,所以返回 2 。

示例 3:

输入:num = 1248

输出:4

解释:1248 可以被它每一位上的数字整除,因此答案是 4 。

提示:

  • num 的数位中不含 0

模拟

根据题意进行模拟即可。

假设起始值为 num,符合要求的数位个数为 ans,按照「从低到高」的方式循环处理 num 中的每个数位:

  1. 每次仅对当前数值 num 的最低位进行判断(当前数值 num 会被不断更新),「通过「模 」的方式来「截取当前数值的最低位」」,并根据要求进行判断,若当前数位符合要求,对 ans 进行加一;

  2. 判断完当前数组 num 的最低位后,「通过「与 地板除」的方式来「摒弃当前数值的最低位」」,并以此更新 num

  3. 循环步骤 1 和步骤 2,直到 num 所有数位均被处理完,即 num = 0

用题面的示例 3 来举个 ,给定 num = 1248,完整处理过程如下:

  1. 当前数 num = 1248,通过 mod 10 取最低位 8,该数值满足要求,ans = 1

    通过 // 10 摒弃已处理的最低位,得到 num = 124

  2. 当前数 num = 124,通过 mod 10 取最低位 4,该数值满足要求,ans = 2

    通过 // 10 摒弃已处理的最低位,得到 num = 12

  3. 当前数 num = 12,通过 mod 10 取最低位 2,该数值满足要求,ans = 3

    通过 // 10 摒弃已处理的最低位,得到 num = 1

  4. 当前数 num = 1,通过 mod 10 取最低位 1,该数值满足要求,ans = 4

    通过 // 10 摒弃已处理的最低位,得到 num = 0,循环结束

Java 代码:

class Solution {
    public int countDigits(int num) {
        int n = num, ans = 0;
        while (num != 0) {
            ans += n % (num % 10) == 0 ? 1 : 0;
            num /= 10;
        }
        return ans;
    }
}

Python 代码:

class Solution:
    def countDigits(self, num: int) -> int:
        return sum(num % int(i) == 0 for i in str(num))
        
        # n, ans = num, 0
        # while num != 0:
        #     ans += n % (num % 10) == 0
        #     num //= 10
        # return ans

C++ 代码:

class Solution {
public:
    int countDigits(int num) {
        int n = num, ans = 0;
        while (num != 0) {
            ans += n % (num % 10) == 0;
            num /= 10;
        }
        return ans;
    }
};

TypeScript 代码:

function countDigits(num: number): number {
    let n = num, ans = 0;
    while (num !== 0) {
        ans += n % (num % 10) == 0 ? 1 : 0;
        num = Math.floor(num / 10);
    }
    return ans;
};

Kotlin 代码:

class Solution {
    fun countDigits(num: Int)Int {
        return num.toString().count { x -> num % (x - '0') == 0 }
    }
}
  • 时间复杂度:
  • 空间复杂度:

我是宫水三叶,每天都会分享算法题解,并和大家聊聊近期的所见所闻。

欢迎关注,明天见。

更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地

你可能感兴趣的:(后端)