工商银行
一直以来,银行研发岗,都是一类较为特别的技术工种。
相比于传统的互联网研发岗,银行业相对更加稳定,工作节奏也相对规律,因此一直都被视为"性价比"较高的去处。
被称为"宇宙行"的工商银行,今年也早早公布了年终奖的情况,不少网友已经在网上进行分享了。
今天就带大家好好盘点一下,工商银行相关的年终奖爆料信息:
- 测试:中位数为 2 个月,平均数为 3.2 个月,但样本数量不多
- 数据分析:中位数 2.5 个月,平均数为 2.7 个月
- 研发:爆料数量最多的工种,中位数 3 个月,平均数 2.5 个月,极少数的员工可以拿到 4~6 个月。
虽然银行岗的年终奖,不像互联网那么动辄十几个月那么有想象力,但收益和风险对等,银行业也(几乎)不会遇到 0 年终的情况。
这 2~3 个月的年终奖虽然不多,但也足以给银行员工带来"稳稳的幸福"。
聊到这里,来一道和「校招」相关的算法题。
题目描述
平台:LeetCode
题号:479
给定一个整数 ,返回 可表示为两个 位整数乘积的 最大回文整数 。
因为答案可能非常大,所以返回它对 取余 。
示例 1:
输入:n = 2
输出:987
解释:99 x 91 = 9009, 9009 % 1337 = 987
示例 2:
输入: n = 1
输出: 9
提示:
枚举 + 数学
对于数位为 的两个数而言,其乘积的位数要么是 ,要么是 。
当数位 时,我们总能在数位为 中找到答案。
利用回文串的特性,我们只需枚举回文串的前半部分即可(后半部分唯一确定),我们只要在枚举前半部分时按照「从大到小」进行,即可确保找到的第一个合法值为最大数,对于一个数位为 的最大数为 。
具体的,当枚举到回文串的前半部分 时,我们利用回文串特性构造出具实际的回文数值 ,随后检查 能否分解成数位为 的数对 ,利用乘法具有交换律,我们只需要枚举数对中的较大数即可。
代码:
class Solution {
public int largestPalindrome(int n) {
if (n == 1) return 9;
int max = (int) Math.pow(10, n) - 1;
for (int i = max; i >= 0; i--) {
long num = i, t = i;
while (t != 0) {
num = num * 10 + (t % 10);
t /= 10;
}
for (long j = max; j * j >= num; j--) {
if (num % j == 0) return (int)(num % 1337);
}
}
return -1;
}
}
- 时间复杂度:枚举回文串的前半部分复杂度为 ;检查回文串能否被分解复杂度为 。整体复杂度为
- 空间复杂度:
最后
巨划算的 LeetCode 会员优惠通道目前仍可用 ~
使用福利优惠通道 leetcode.cn/premium/?promoChannel=acoier ,年度会员 有效期额外增加两个月 ,季度会员 有效期额外增加两周,更有超大额专属 🧧 和实物 🎁 福利每月发放。
我是宫水三叶,每天都会分享算法知识 ,并和大家聊聊近期的所见所闻。
欢迎关注,明天见。
更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉
本文由mdnice多平台发布