一线城市打工人的大龄焦虑:都市容不下躯壳,老家容不下灵魂(含华为 OD 面试原题)

互联网的大龄焦虑

今天看到一个老生常谈的话题「大龄焦虑:都市容不下躯壳,老家容不下灵魂」

现如今,内卷已不是互联网行业专属名称,早已渗透到一线城市中的各行各业。

但地域落差对职业的影响,互联网行业还是稳稳的位于第一梯队。

一些出生在相对落后省份的同学,回老家意味着失业换行。

某些城镇可能根本没有匹配程序员的岗位,而在一线城市,程序员又是碗"青春饭"。

近两年的毕业生人生屡创新高,不少同学是因为当时选专业的时候,未能突破原生家庭及周边环境的信息差,单纯因为听说「计算机行业工资高」选中当前专业。

入行了才知道「35 岁无人要」等黑话,于是转念一想,又从新把希望寄托于「像前几年毕业的小伙伴那样,在一线城市卷几年,等到年纪大的时候也就存够钱,到时再回老家」这样的计划。

但随着这几年互联网的急转直下,再结合一线城市房租的稳步上升,计划又一次败给了现实变化。

一位网友说出了自己的情况:

alt

这位就职于「字节跳动」的同学已年到 30,存款 150W,伴侣存款不多,双方也都是普通家庭,对前途感到十分迷茫。

150W,如果是想在一线城市买房,再凑凑或许能在较远地区交个首付,但月供会成为大问题,贷款年限可能远比职业生涯要长 ...

150W,如果是回老家,肯定不是一笔小钱,但也不足以完全躺平 ...

这可是字节跳动,宇宙厂尚且如此。

alt

其他年龄更大的,或待遇更低的一线互联网从业者更是没有破局之路。

alt

...

回归主线。

来一道最近网友们问得最多的,华为 OD 一面算法原题,题面略有修改(本题面剔除掉了故事背景,更裸),解法和代码完全一致。

现在华为 OD 都考 Hard 了,也是够卷的。

题目描述

平台:LeetCode

题号:891

一个序列的「宽度」定义为该序列中最大元素和最小元素的差值。

给你一个整数数组 nums,返回 nums 的所有非空子序列的宽度之和。

由于答案可能非常大,请返回对 取余后的结果。

子序列定义为从一个数组里删除一些(或者不删除)元素,但不改变剩下元素的顺序得到的数组。

例如,[3,6,2,7] 就是数组 [0,3,1,6,2,2,7] 的一个子序列。

示例 1:

输入:nums = [2,1,3]

输出:6

解释:子序列为 [1], [2], [3], [2,1], [2,3], [1,3], [2,1,3] 。
相应的宽度是 0, 0, 0, 1, 1, 2, 2 。
宽度之和是 6 。

示例 2:

输入:nums = [2]

输出:0

提示:

数学

提示一:每个子序列对答案的贡献

对于某个子序列而言,若其最大值为 ,最小值为 ,则该子序列对答案的贡献为

我们有若干个子序列,即有若干个 ,答案为所有 之和,我们称一个 item

提示二:每个 参与了多少个 item 的组成,在最终展开式中又是如何

对于每个 而言,ab 均必然是具体的

同时易知若 作为了 个子序列的最小值,那么在最终表达式展开中,必然有 ;同理若 作为了 个子序列的最大值,那么在最终表达式展开中,必然有

提示三:统计每个 作为最值时,有多少个子序列

先不考虑 的重复问题。

作为子序列最小值时,首先 必选,小于 的必不选,而大于 的可选可不选,组合个数取决于大于 的数的个数,假设有 个,那么根据组合数原理,共有 个组合,即共有 个子序列。此时 对答案的贡献为

同理, 作为子序列最大值时,子序列个数取决于小于 的数的个数,假设有 个,此时 对答案的贡献为

提示四:如何快速得知比 大/小 的数的个数

排序。

提示五: 的重复问题

无论是将 视作最大值还是最小值,我们的组合数均取决于某一侧的数的个数,因此不会答案正确性产生影响。

提示六: 操作的重复计算问题

视作最值,我们都需要统计两边数所产生的组合数个数,因此即使对于单个用例都会面临重复计算某个 的问题(对称性)。

同时对于跨样例而言,我们仍会重复计算某些 (尤其是较小的 值),为避免重复计算,我们可以通过打表预处理的方式算得所有可能要用到 结果,在使用的时候直接通过查表取得。

Java 代码:

class Solution {
    static int N = 100010, MOD = (int)1e9+7;
    static long[] p = new long[N];
    static {
        p[0] = 1
        for (int i = 1; i < N; i++) p[i] = p[i - 1] * 2 % MOD;
    }
    public int sumSubseqWidths(int[] nums) {
        int n = nums.length;
        long ans = 0;
        Arrays.sort(nums);
        for (int i = 0; i < n; i++) {
            ans += (p[i] * nums[i]) % MOD;
            ans %= MOD;
            ans -= (p[n - i - 1] * nums[i]) % MOD;
            ans %= MOD;
        }
        return (int) ans;
    }
}

TypeScript 代码:

function sumSubseqWidths(nums: number[]): number {
    let n = nums.length, mod = 1000000007, ans = 0
    const p = new Array<number>(n + 10).fill(1)
    for (let i = 1; i <= n; i++) p[i] = p[i - 1] * 2 % mod
    nums.sort((a,b)=>a-b)
    for (let i = 0; i < n; i++) {
        ans += p[i] * nums[i] % mod
        ans %= mod
        ans -= p[n - i - 1] * nums[i] % mod
        ans %= mod
    }
    return ans
}

Python3 代码:

class Solution:
    def sumSubseqWidths(self, nums: List[int]) -> int:
        n, mod, ans = len(nums), 10000000070
        p = [1] * (n + 10)
        for i in range(1, n + 1):
            p[i] = p[i - 1] * 2 % mod
        nums.sort()
        for i in range(n):
            ans = ans + p[i] * nums[i] % mod
            ans = ans - p[n - i - 1] * nums[i] % mod
        return ans % mod
  • 时间复杂度:排序复杂度为 ;统计答案复杂度为 。整体复杂度为
  • 空间复杂度:

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

欢迎关注,明天见。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SpringCloud】使用 Spring Cloud Alibaba 之 Sentinel 实现微服务的限流、降级、熔断

目录 一、Sentinel 介绍1.1 什么是 Sentinel1.2 Sentinel 特性1.3 限流、降级与熔断的区别 二、实战演示2.1 下载启动 Sentinel 控制台2.2 后端微服务接入 Sentinel 控制台2.2.1 引入 Sentinel 依赖2.2.2 添加 Sentinel 连接配置 2.3 使用 Sentinel 进行流控&#xff08;含限流…

【SAP Hana】SAP S/4 HANA 数据库底表查询及运维管理

1、SAP S/4 HANA 简介 1.1 S4与ECC的区别 SAP ECC时期支持常规主流的关系型数据库&#xff0c;如MSSQL、ORACLE、IBM DB2等。 SAP S4 仅支持在HANA数据库上运行。 SAP基于HANA的内存计算、列式存储&#xff0c;以及并行计算特性&#xff0c;对SAP数据底表做了大量的改造优化&am…

java.lang.IllegalStateException: Promise already completed.

spark submit 提交作业的时候提示Promise already complete 完整日志如下 File "/data5/hadoop/yarn/local/usercache/processuser/appcache/application_1706192609294_136972/container_e41_1706192609294_136972_02_000001/py4j-0.10.6-src.zip/py4j/protocol.py"…

【2024软件测试面试必会技能】Jmeter_性能测试(5):负载测试和压力测试

负载测试 负载测试/容量测试&#xff1a;通过在测试过程中不断的调整负载&#xff0c;找到在多少用户量情况下&#xff0c;系统出现性能下降拐点&#xff1b;也被称为容量测试&#xff1b; 举例&#xff1a; 微信发送红包的负载测试&#xff1a; 1、找运维人员了解目前系统…

多普勒明渠流量监测系统

TH-ML1随着科技的不断进步&#xff0c;多普勒明渠流量监测系统作为一种先进的流量测量技术&#xff0c;正逐渐在水利、环保、农业等领域展现出其强大的应用潜力。 一、多普勒明渠流量监测系统的基本原理 多普勒明渠流量监测系统基于多普勒效应进行流量测量。多普勒效应是指当波…

C#,数值计算,矩阵的乔莱斯基分解(Cholesky decomposition)算法与源代码

一、安德烈路易斯乔尔斯基 安德烈路易斯乔尔斯基出生于法国波尔多以北的查伦特斯海域的蒙古扬。他在波尔多参加了Lyce e&#xff0c;并于1892年11月14日获得学士学位的第一部分&#xff0c;于1893年7月24日获得第二部分。1895年10月15日&#xff0c;乔尔斯基进入莱科尔理工学院…

SQL Server ID 自增不连续、删除数据后再次插入ID不连续

背景 当我们使用SQL Server 进行数据库操作时&#xff0c;经常会把 Table 的 ID 设置成主键自增 PRIMARY KEY IDENTITY&#xff0c;但是这样做存在一个问题就是 当我们删除一行数据后&#xff0c;再次添加后会看到ID的顺序不连续&#xff0c;如下所示。 查询一下&#xff1a;…

4.pom文件介绍Maven常用命令

1.pom.xml文件介绍. 1.1project标签和modelVersion标签介绍. pom.xml文件是maven的核心文件&#xff0c;POM(Project Object Model&#xff0c;项目对象模型)定义了项目的基本信息&#xff0c;用于描述如何构建&#xff0c;声明项目依赖;&#xff1b; 1.2依赖坐标介绍. 依赖的…

Springboot集成Druid实现监控功能

Druid是阿里巴巴开发的号称为监控而生的数据库连接池&#xff0c;在功能、性能、扩展性方面&#xff0c;都超过其他数据库连接池&#xff0c;包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等等等&#xff0c;秒杀一切。Druid可以很好的监控DB池连接和SQL的执行情况&#…

STM32G030C8T6:定时器1ms中断(以64MHz外部晶振为例)

本专栏记录STM32开发各个功能的详细过程&#xff0c;方便自己后续查看&#xff0c;当然也供正在入门STM32单片机的兄弟们参考&#xff1b; 本小节的目标是&#xff0c;系统主频64 MHZ,采用高速外部晶振&#xff0c;通过定时器3 每秒中断控制 PB9 引脚输出高低电平&#xff0c;从…

【服务器】服务器推荐

一、引言 在数字世界的浪潮中&#xff0c;服务器作为数据存储和处理的基石&#xff0c;其重要性不言而喻。而在这个繁星点点的市场中&#xff0c;雨云以其独特的优势和超高的性价比&#xff0c;逐渐成为众多企业和个人的首选。今天&#xff0c;就让我带你走进雨云的世界&#…

DC与DCT DCG的区别

先进工艺不再wire load model进行静态时序分析&#xff0c;否则综合结果与后端物理电路差距很大&#xff0c;因此DC综合工具也进行了多次迭代&#xff0c;DC工具有两种模式&#xff0c;包括wire load mode和Topographical Mode&#xff0c;也就是对应的DC Expert和DC Ultra。 …

ios抓包Tunnel to......443

fiddler官网下载“CertMaker for iOS and Android”插件&#xff0c;官网插件&#xff1a;https://www.telerik.com/fiddler/add-ons 双击运行插件后&#xff0c;重启fiddler&#xff0c;ios重新安装证书即可

K8S部署Java项目 pod的logs报错为:Error: Unable to access jarfile app.jar

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

psp游戏存档收集SAVEDATA

不想从头开始 ppsspp存档目录 pc&#xff1a;ppsspp解压目录\memstick\PSP\SAVEDATA 安卓&#xff1a;根目录\PSP\SAVEDATA 噬神者2(日版) NPJH50832099c645531020001000 風燐-https://wwl.lanzouq.com/iI1R01owozxa 咲夜-https://wwl.lanzouq.com/id1tX1owp2uf につてのぬ…

【ACW 服务端】页面操作Java增删改查代码生成

版本: 1.2.2-JDK17-SNAPSHOT 项目地址&#xff1a;wu-smart-acw 演示地址&#xff1a;演示地址 admin/admin Java增删改查代码生成 找到对应菜单 选择你需要的数据实例 选择数据库 选择数据库表 选择客户端&#xff08;如果是本地ACW服务代码启动默认注册上的客户端ID是…

AD9226 65M采样 模数转换

用 vivado 写的 AD9220_ReadTEST module AD9220_ReadTEST( input clk, input rstn,output clk_driver, //模块时钟管脚 input [12:0]IO_data, //模块数据管脚output [11:0]ADC_Data,//12位ADC数据 output ADC_OTR //信号过压标志位 );wire areset, pll260m_lockedPIN; wire…

开源分子对接程序rDock的安装及使用流程

前言 本文介绍开源分子对接程序rDock在Linux Ubuntu 22.04系统上的conda安装、编译安装过程及程序使用流程。 一、rDock是什么&#xff1f; rDock来源 rDock是一个快速、多功能的开源对接程序&#xff0c;可用于将小分子与蛋白质和核酸对接。它专为高通量虚拟筛选&#xff08…

OLED透明屏厂家:开启2024年新征程

随着科技的不断进步和创新&#xff0c;OLED透明屏作为一种前沿的显示技术&#xff0c;正逐渐走进人们的视野&#xff0c;成为多个领域的焦点。在2024年2月21日这个特殊的日子&#xff0c;我们这家领先的OLED透明屏厂家正式开工&#xff0c;预示着我们将迎来一个充满机遇和挑战的…

Ubuntu22部署MySQL5.7详细教程

Ubuntu22部署MySQL5.7详细教程 一、下载MySQL安装包二、安装MySQL三、启动MySQL检查状态登录MySQL 四、开启远程访问功能1、允许其他主机通过root访问数据库2、修改配置文件&#xff0c;允许其他IP通过自定义端口访问 五、使用Navicat连接数据库 默认情况下&#xff0c;Ubuntu2…