用户上传商品网站用什么做,莘县网站建设,龙岩app设计,杭州做兼职网站快手面试 最近收到一位读者的留言#xff0c;是跟我吐槽「快手社招面试」的。 但是由于交谈内容太多东西需要脱敏#xff0c;我打完马赛克之后#xff0c;发现上下文都不连贯了。 遂罢。 但一转念#xff0c;我想如果这真的是这个公司的普遍性问题#xff0c;而非独立个例… 快手面试 最近收到一位读者的留言是跟我吐槽「快手社招面试」的。 但是由于交谈内容太多东西需要脱敏我打完马赛克之后发现上下文都不连贯了。 遂罢。 但一转念我想如果这真的是这个公司的普遍性问题而非独立个例。 或许我能在社交媒体上找到其他人的案例 于是我翻到了这样的帖子 这位网友能够进入面试说明简历方面是符合要求的大概率也与 HR 在商定面试时间时有过初步沟通。 因此至少在初步的岗位匹配中这位网友大概率是通过的否则也不会进入面试环节。 结果却在面试中自我介绍结束后就被拒掉这个确实不好理解。 帖子还带有「打工人在笑什么」这样 tag我刚开始是真的不相信以为就是纯恶搞调侃的。 但细看评论区除了一如既往在幽默领域发挥稳定的神评网友以外还是有不少网友表示有过类似经历的。 再看其他第一人称爆料的帖子 这一位则是 ... 还记得开头那个「刚自我介绍完就被问还有什么问题」的帖子我提到了当中有一些很幽默的评论。 给大家分享其中一个 ... 回归主线。 我可没谈快手值不值得去只是跟大家分享了有网友反映过在快手面试遇到过的事儿。 如今这个行情有面试机会还是得去呀。 来一道「快手」一面算法原题。 题目描述 平台LeetCode 题号384 给你一个整数数组 nums设计算法来打乱一个没有重复元素的数组。 实现 Solution class: Solution(int[] nums) 使用整数数组 nums 初始化对象 int[] reset() 重设数组到它的初始状态并返回 int[] shuffle() 返回数组随机打乱后的结果 示例 输入[Solution, shuffle, reset, shuffle][[[1, 2, 3]], [], [], []]输出[null, [3, 1, 2], [1, 2, 3], [1, 3, 2]]解释Solution solution new Solution([1, 2, 3]);solution.shuffle(); // 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。例如返回 [3, 1, 2]solution.reset(); // 重设数组到它的初始状态 [1, 2, 3] 。返回 [1, 2, 3]solution.shuffle(); // 随机返回数组 [1, 2, 3] 打乱后的结果。例如返回 [1, 3, 2] 提示 nums 中的所有元素都是 唯一的 最多可以调用 次 reset 和 shuffle 洗牌算法 共有 个不同的数根据每个位置能够选择什么数共有 种组合。 题目要求每次调用 shuffle 时等概率返回某个方案或者说每个元素都够等概率出现在每个位置中。 我们可以使用 洗牌算法在 复杂度内等概率返回某个方案。 具体的我们从前往后尝试填充 该填入什么数时通过随机当前下标与剩余的哪个下标进行值交换来实现。 对于下标 而言我们从 中随机出一个位置与 进行值交换当所有位置都进行这样的处理后我们便得到了一个公平的洗牌方案。 ❝ 对于下标为 位置从 随机一个位置进行交换共有 种选择下标为 的位置从 随机一个位置进行交换共有 种选择 ... 且每个位置的随机位置交换过程相互独立。 ❞ Java 代码 class Solution { int[] nums; int n; Random random new Random(); public Solution(int[] _nums) { nums _nums; n nums.length; } public int[] reset() { return nums; } public int[] shuffle() { int[] ans nums.clone(); for (int i 0; i n; i) { swap(ans, i, i random.nextInt(n - i)); } return ans; } void swap(int[] arr, int i, int j) { int c arr[i]; arr[i] arr[j]; arr[j] c; }} C 代码 class Solution {public: vectorint nums; int n; Solution(vectorint _nums) : nums(_nums), n(_nums.size()) {} vectorint reset() { return nums; } vectorint shuffle() { vectorint ans nums; for (int i 0; i n; i) { swap(ans[i], ans[i rand() % (n - i)]); } return ans; }}; Python 代码 class Solution: def __init__(self, nums: List[int]): self.nums nums self.n len(nums) def reset(self) - List[int]: return self.nums def shuffle(self) - List[int]: ans self.nums[:] for i in range(self.n): j i random.randint(0, self.n - i - 1) ans[i], ans[j] ans[j], ans[i] return ans TypeScript 代码 class Solution { private nums: number[]; private n: number; constructor(nums: number[]) { this.nums nums; this.n nums.length; } reset(): number[] { return this.nums.slice(); } shuffle(): number[] { const ans: number[] this.nums.slice(); for (let i 0; i this.n; i) { const j i Math.floor(Math.random() * (this.n - i)); [ans[i], ans[j]] [ans[j], ans[i]]; } return ans; }} 时间复杂度 空间复杂度 我是宫水三叶每天都会分享算法题解并和大家聊聊近期的所见所闻。 欢迎关注明天见。 更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 本文由 mdnice 多平台发布