1800 万,财务自由了

news2025/1/10 21:16:41

《黑神话:悟空》

距离《黑神话:悟空》上线(8 月 20 日)上线已过去半个月,从刚开始全网热议,连官方都下场点评,到现在的逐渐回归平静。

alt

不是游戏圈或是对数据不敏感的网友,可能会落入《黑神话:悟空》已经开始失势的"错觉"中。

但实际上,《黑神话:悟空》还在持续不断的创造新历史。

据最新的机构统计数据显示,《黑神话:悟空》上市两周,销量已突破 1800 万份,营销收入高达 8.67 亿美元。

要知道,在上市前两周,网友还在讨论《黑神话:悟空》到底能不能卖出 300 万份,能不能保本;上市前一周还在讨论,能不能摸到 500 万份的门槛;上市前三天还在遐想,冲击完第一波销售额之后,慢慢卖,利用长尾效应该能达到 1000 万份。

现在一个月不到,已经 1800 万份了,比此前最乐观的预期还再要高几个档次。

之前我们提到过 《黑神话:悟空》这家公司的薪资水平 ,无论是深圳还是杭州,都属于没有竞争力的一档,但这一波 1800 万份销量,再加上后续的 DLC 以及 IP 续集开发,保底赚它 100 亿,这已经不是年终奖几十个月的问题,而是整个游戏工作室集体财务自由。

对的,我说的是整个游戏工作室。

游戏科学有 30%+ 的股份在老板手上,另外还有 30%+ 的股份为员工集体持有。

有时候我们会调侃一些项目,三年不开张,开张吃三年,《黑神话:悟空》这一波是四年不开张,开张上百亿(25 倍的回报率)。

...

回归主题。

周五了,来一道不太困难算法题。

题目描述

平台:LeetCode

题号:992

给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定不同的子数组为好子数组。

例如, 中有 3 个不同的整数:1,2,以及 3。

返回 A 中好子数组的数目。

示例 1:

输入:A = [1,2,1,2,3], K = 2

输出:7

解释:恰好由 2 个不同整数组成的子数组:[1,2], [2,1], [1,2], [2,3], [1,2,1], [2,1,2], [1,2,1,2]

示例 2:

输入:A = [1,2,1,3,4], K = 3

输出:3

解释:恰好由 3 个不同整数组成的子数组:[1,2,1,3], [2,1,3], [1,3,4]

提示:

滑动窗口

对原数组每个 而言:

  1. 找到其左边「最远」满足出现 个不同字符的下标,记为 ,这时候形成的区间为
  2. 找到其左边「最远」满足出现 个不同字符的下标,记为 ,这时候形成的区间为
  3. 「那么对于 其实就是代表以 为右边界(必须包含 ),不同字符数量「恰好」为 的子数组数量」
alt

我们使用 lower 数组存起每个位置的 p;使用 upper 数组存起每个位置的 j

累积每个位置的 就是答案。

计算 lower 数组 和 upper 数组的过程可以使用双指针。

Java 代码:

class Solution {
    public int subarraysWithKDistinct(int[] nums, int k) {
        int n = nums.length, ans = 0;
        int[] lower = new int[n], upper = new int[n];
        find(nums, lower, k);
        find(nums, upper, k - 1);
        for (int i = 0; i < n; i++) ans += upper[i] - lower[i];
        return ans;
    }
    void find(int[] nums, int[] arr, int k) {
        int n = nums.length;
        int[] cnt = new int[20010];
        for (int i = 0, j = 0, sum = 0; j < n; j++) {
            if (++cnt[nums[j]] == 1) sum++;
            while (sum > k) {
                if (--cnt[nums[i++]] == 0) sum--;
            }
            if (sum == k) arr[j] = i;
        }
    }
}

C++ 代码:

class Solution {
public:
    int subarraysWithKDistinct(vector<int>& nums, int k) {
        int n = nums.size(), ans = 0;
        vector<intlower(n, 0)upper(n, 0);
        find(nums, lower, k);
        find(nums, upper, k - 1);
        for (int i = 0; i < n; i++) ans += upper[i] - lower[i];
        return ans;
    }
    void find(vector<int>& nums, vector<int>& arr, int k) {
        int n = nums.size();
        unordered_map<intint> cnt;
        int i = 0, j = 0, sum = 0;
        for (j = 0; j < n; j++) {
            if (++cnt[nums[j]] == 1) sum++;
            while (sum > k) {
                if (--cnt[nums[i++]] == 0) sum--;
            }
            if (sum == k) arr[j] = i;
        }
    }
};

Python 代码:

class Solution:
    def subarraysWithKDistinct(self, nums: List[int], k: int) -> int:
        n, ans = len(nums), 0
        lower, upper = [0] * n, [0] * n
        self.find(nums, lower, k)
        self.find(nums, upper, k - 1)
        return sum(upper[i] - lower[i] for i in range(n))

    def find(self, nums, arr, k):
        n = len(nums)
        cnt = defaultdict(int)
        i, j, sumv = 000
        while j < n:
            if cnt[nums[j]] == 0:
                sumv += 1
            cnt[nums[j]] += 1
            while sumv > k:
                cnt[nums[i]] -= 1
                if cnt[nums[i]] == 0:
                    sumv -= 1
                i += 1
            if sumv == k:
                arr[j] = i
            j += 1
  • 时间复杂度:对数组进行常数次扫描。复杂度为
  • 空间复杂度:

最后

巨划算的 LeetCode 会员优惠通道目前仍可用 ~

使用福利优惠通道 leetcode.cn/premium/?promoChannel=acoier,年度会员 有效期额外增加两个月,季度会员 有效期额外增加两周,更有超大额专属 🧧 和实物 🎁 福利每月发放。

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

欢迎关注,明天见。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112732.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【路径规划】 使用计算机视觉和机器人操纵器绘制肖像

摘要 本项目展示了使用计算机视觉和机械臂绘制肖像的完整流程。系统利用网络摄像头获取肖像图像&#xff0c;经过图像处理后生成路径&#xff0c;然后利用逆向运动学将路径转化为机械臂的运动轨迹&#xff0c;最终在硬件机器人上执行绘制。实验结果表明&#xff0c;该系统能够…

【人工智能学习笔记】2_数据处理基础

数据的概述 数据&#xff08;Data&#xff09;的定义 用于表示客观事物的未经加工的原始素材不仅指狭义上的数字&#xff0c;也只具有一定意义的文字、字母、数字符号的组合客观事物的属性、数量、位置及其相互关系的抽象表示 在计算机科学与技术领域中&#xff0c;数据是指…

微信小程序和普通网页有什么不同

微信小程序和普通网页的区别主要体现在文件后缀、运行原理、运行环境、开发规则以及标签名等方面。微信小程序于2016年推出&#xff0c;依托微信庞大的用户基础&#xff0c;迅速成为移动应用中的佼佼者&#xff0c;而普通网页则基于传统的HTML、CSS和JavaScript技术构建。以下将…

2024年四川省安全员B证证考试题库及四川省安全员B证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年四川省安全员B证证考试题库及四川省安全员B证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大…

C语言深度剖析--不定期更新的第三弹

hello,everybody!最近又更新了哈&#xff0c;希望对大家有所帮助 switch case关键字 基本语法&#xff1a; switch(整型变量/常量/整型表达式){case 1:var 1;break;case 2:var 2;break;case 3:var 3;break;default:break; }switch case语句也和if语句一样具有判断和分支的功…

第4章-02-用WebDriver驱动浏览器页面截图

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…

NX重要操作函数调用流程

1.文件打开 2.鼠标移动操作 3.定时器

Vue3+Ts封装类似于Element-plus的图片预览组件

组件目录结构如下: options.ts文件用来存储配置文件, 代码如下: import {isFirefox} from ./tools;export type ImageViewerAction = zoomIn | zoomOut | clocelise | anticlocelise;export const mousewheelEventName = isFirefox() ? DOMMouseScroll : mousewheel;// 键…

自然语言处理系列五十三》文本聚类算法》文本聚类介绍及相关算法

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列五十三文本聚类算法》文本聚类介绍及相关算法K…

isalnum函数讲解 <ctype.h>头文件函数

目录 ​1.头文件 2.isalnum函数讲解​​​​​​​ 方源一把抓住VS2022&#xff0c;顷刻 炼化&#xff01; 1.头文件 以上函数都需要包括头文件<ctype.h> &#xff0c;其中包括 isalnum 函数 #include<ctype.h> 2.isalnum函数讲解 isalnum函数是一种判断字符…

解决:Module build failed (from ./node_modules/sass-loader/dist/cjs.js)问题

一、问题 Module build failed (from ./node_modules/sass-loader/dist/cjs.js): Error: Cannot find module sass 二、解决方法 1.清除缓存 npm cache clean --force2.重构项目 npm install 3.更新&#xff08;获取最新的&#xff09;node-sass和sass-loader依赖包 npm …

OpenAI SORA团队负责人 通往智能的方式 报告笔记

OpenAI SORA团队负责人 通往智能的方式 报告笔记 这个报告其实是2024年智源大会的主旨报告&#xff0c;OpenAI SORA和DALL-E团队负责人Aditya Ramesh给出的一段有关多模态大模型的报告。我去听了现场&#xff0c;感觉倍受启发&#xff0c;但是感觉很多并不能当场理解&#xff…

赢麻了!算法学不懂都来翻烂这本书,吊打国内所有晦涩难懂的毒教材!!

这本书巧妙的运用了简洁的图表和示意图&#xff0c;帮助读者更加直观的理解各种机器学习算法的工作原理和应用场景。 就是一本既全面又容易上手的机器学习宝典&#xff0c;适合各种水平的读者&#xff0c;不管你是对AI感兴趣的爱好者&#xff0c;还是正在从事相关工作的专业人…

Linux系统应用(5)——编译器gcc

个人内容简介&#xff1a; &#x1f343;个人主页&#xff1a;诉清风2023 &#x1f388;逆转时间的公式&#xff0c;就是珍惜现在ദ്ദി˶&#xff70;̀֊&#xff70;́ ) ✧ 目录 个人内容简介&#xff1a; &#x1f388;逆转时间的公式&#xff0c;就是珍惜现在ദ്ദ…

局域网一套键鼠控制两台电脑(台式机和笔记本)

服务端&#xff08;有键盘和鼠标的电脑作为服务端&#xff09; 下载软件 分享文件&#xff1a;BarrierSetup-2.3.3.exe 链接&#xff1a;https://pan.xunlei.com/s/VO66rAZkzxTxVm-0QRCJ33mMA1?pwd4jde# 配置服务端 一&#xff0c; 二&#xff0c; 客户端屏幕名称一定要和…

springboot+vue+mybatis智慧篮球馆预约+PPT+论文+讲解+售后

近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;智慧篮球馆预约利用计算机网络实现信息化管理&#xff0c;使整个智慧篮球馆预约的发展和服务水平有显著提升。 本文拟采用Eclipse开发…

虚拟机ubuntu配置opencv和opencv_contrib

前期准备 1.下载opencv和opencv_contrib源码 opencv-4.6.0&#xff1a;https://opencv.org/releases/ opencv_contrib-4.6.0&#xff1a;https://github.com/opencv/opencv_contrib 在ubuntu直接下载或者在window上下好传到虚拟机里都可以 自己找个地方把他们解压&#xf…

[项目][CMP][Thread Cache]详细讲解

目录 1.设计&结构2.申请内存3.释放内存4.框架 1.设计&结构 Thread Cache是哈希桶结构&#xff0c;每个桶是一个按桶位置映射大小的内存块对象的自由链表 每个线程都会有一个Thread Cache对象&#xff0c;这样每个线程在这里获取对象和释放对象时是无锁的 TLS – Thr…

深入理解Kotlin中的异步网络请求处理

在现代移动和Web应用开发中&#xff0c;异步网络请求处理是核心功能之一。Kotlin&#xff0c;作为一种现代、简洁且功能强大的编程语言&#xff0c;提供了多种方式来处理异步任务&#xff0c;使得开发者能够编写出更加高效和响应迅速的应用。本文将深入探讨Kotlin中的异步网络请…

FPGA开发:Verilog数字设计基础

EDA技术 EDA指Electronic Design Automation&#xff0c;翻译为&#xff1a;电子设计自动化&#xff0c;最早发源于美国的影像技术&#xff0c;主要应用于集成电路设计、FPGA应用、IC设计制造、PCB设计上面。 而EDA技术就是指以计算机为工具&#xff0c;设计者在EDA软件平台上…