最新,955神仙公司名单(非外企)
955 神仙公司名单(非外企)
往常爆料最多的 955 神仙公司名单通常都是集中在一线城市的外企。
例如下面这张最为流行的名单图:
最近牛客网上有同学整理出了非外企的版本,其中不乏一些耳熟能详的互联网产品。
随手把名单分享给大家。
原文地址:https://www.nowcoder.com/discuss/560023184054001664
以下为精简过的原文内容:
...
回归主线。
来一道银行岗刚考过的算法题。
题目描述
平台:LeetCode
题号:636
有一个单线程 CPU 正在运行一个含有 n 道函数的程序。
每道函数都有一个位于 0 和 n-1 之间的唯一标识符。
函数调用存储在一个调用栈上 :当一个函数调用开始时,它的标识符将会推入栈中。而当一个函数调用结束时,它的标识符将会从栈中弹出。标识符位于栈顶的函数是当前正在执行的函数。每当一个函数开始或者结束时,将会记录一条日志,包括函数标识符、是开始还是结束、以及相应的时间戳。
给你一个由日志组成的列表 logs ,其中 logs[i] 表示第 i 条日志消息,该消息是一个按 "{function_id}:{"start" | "end"}:{timestamp}" 进行格式化的字符串。
例如,"0:start:3" 意味着标识符为 0 的函数调用在时间戳 3 的 起始开始执行 ;而 "1:end:2" 意味着标识符为 1 的函数调用在时间戳 2 的末尾结束执行。
注意,函数可以调用多次,可能存在递归调用 。
函数的「独占时间」定义是在这个函数在程序所有函数调用中执行时间的总和,调用其他函数花费的时间不算该函数的独占时间。
例如,如果一个函数被调用两次,一次调用执行 2 单位时间,另一次调用执行 1 单位时间,那么该函数的独占时间为 2 + 1 = 3 。
以数组形式返回每个函数的独占时间,其中第 i 个下标对应的值表示标识符 i 的函数的独占时间。
示例 1: 
输入:n = 2, logs = ["0:start:0","1:start:2","1:end:5","0:end:6"]
输出:[3,4]
解释:
函数 0 在时间戳 0 的起始开始执行,执行 2 个单位时间,于时间戳 1 的末尾结束执行。
函数 1 在时间戳 2 的起始开始执行,执行 4 个单位时间,于时间戳 5 的末尾结束执行。
函数 0 在时间戳 6 的开始恢复执行,执行 1 个单位时间。
所以函数 0 总共执行 2 + 1 = 3 个单位时间,函数 1 总共执行 4 个单位时间。
示例 2:
输入:n = 1, logs = ["0:start:0","0:start:2","0:end:5","0:start:6","0:end:6","0:end:7"]
输出:[8]
解释:
函数 0 在时间戳 0 的起始开始执行,执行 2 个单位时间,并递归调用它自身。
函数 0(递归调用)在时间戳 2 的起始开始执行,执行 4 个单位时间。
函数 0(初始调用)恢复执行,并立刻再次调用它自身。
函数 0(第二次递归调用)在时间戳 6 的起始开始执行,执行 1 个单位时间。
函数 0(初始调用)在时间戳 7 的起始恢复执行,执行 1 个单位时间。
所以函数 0 总共执行 2 + 4 + 1 + 1 = 8 个单位时间。
示例 3:
输入:n = 2, logs = ["0:start:0","0:start:2","0:end:5","1:start:6","1:end:6","0:end:7"]
输出:[7,1]
解释:
函数 0 在时间戳 0 的起始开始执行,执行 2 个单位时间,并递归调用它自身。
函数 0(递归调用)在时间戳 2 的起始开始执行,执行 4 个单位时间。
函数 0(初始调用)恢复执行,并立刻调用函数 1 。
函数 1在时间戳 6 的起始开始执行,执行 1 个单位时间,于时间戳 6 的末尾结束执行。
函数 0(初始调用)在时间戳 7 的起始恢复执行,执行 1 个单位时间,于时间戳 7 的末尾结束执行。
所以函数 0 总共执行 2 + 4 + 1 = 7 个单位时间,函数 1 总共执行 1 个单位时间。
示例 4:
输入:n = 2, logs = ["0:start:0","0:start:2","0:end:5","1:start:7","1:end:7","0:end:8"]
输出:[8,1]
示例 5:
输入:n = 1, logs = ["0:start:0","0:end:0"]
输出:[1]
提示:
-
-
-
-
-
两个开始事件不会在同一时间戳发生 -
两个结束事件不会在同一时间戳发生 -
每道函数都有一个对应 "start"日志的"end"日志
模拟
我们使用「栈」来模拟执行过程:当一个函数被调用(op = start)时,压入栈内,当函数调用完成(op = end)时,从栈顶弹出(此时栈顶元素必然是该结束函数的入栈记录),使用变量 cur 记录当前时间。
从前往后处理所有的 ,根据 是属于函数调用还是函数结束进行分情况讨论:
-
当 为函数调用:此时从该函数的调用发起时间 ts到上一次记录的当前时间,都是前一函数的执行时间,因此可以将ts - cur累加到栈帧中的前一函数。即若栈不为空,则将该时间累加到栈顶对应的函数上,然后将 入栈,同时更新当前时间; -
当 为函数结束:此时栈顶元素必然是该函数的调用记录,此时 的结束时间与上一次记录的当前时间的时长 ts - cur + 1,必然是该函数的执行时间,将其累加到当前函数中,并更新当前时间。
Java 代码:
class Solution {
public int[] exclusiveTime(int n, List<String> logs) {
int[] ans = new int[n];
Deque<Integer> d = new ArrayDeque<>();
int cur = -1;
for (String log : logs) {
String[] ss = log.split(":");
int idx = Integer.parseInt(ss[0]), ts = Integer.parseInt(ss[2]);
if (ss[1].equals("start")) {
if (!d.isEmpty()) ans[d.peekLast()] += ts - cur;
d.addLast(idx);
cur = ts;
} else {
int func = d.pollLast();
ans[func] += ts - cur + 1;
cur = ts + 1;
}
}
return ans;
}
}
C++ 代码:
class Solution {
public:
vector<int> exclusiveTime(int n, vector<string>& logs) {
vector<int> ans(n, 0);
stack<int> s;
int cur = -1;
for (auto log : logs) {
istringstream ss(log);
string buf;
vector<string> tokens;
while (getline(ss, buf, ':')) {
tokens.push_back(buf);
}
int idx = stoi(tokens[0]), ts = stoi(tokens[2]);
if (tokens[1] == "start") {
if (!s.empty()) ans[s.top()] += ts - cur;
s.push(idx);
cur = ts;
} else {
ans[s.top()] += ts - cur + 1;
s.pop();
cur = ts + 1;
}
}
return ans;
}
};
Python 代码:
class Solution:
def exclusiveTime(self, n: int, logs: List[str]) -> List[int]:
ans = [0] * n
s = []
cur = -1
for log in logs:
ss = log.split(':')
idx, ts = int(ss[0]), int(ss[2])
if ss[1] == "start":
if s: ans[s[-1]] += ts - cur
s.append(idx)
cur = ts
else:
ans[s.pop()] += ts - cur + 1
cur = ts + 1
return ans
TypeScript 代码:
function exclusiveTime(n: number, logs: string[]): number[] {
const ans = new Array<number>(n).fill(0)
const stk = new Array<number>()
let he = 0, ta = 0, cur = -1
for (let log of logs) {
const ss = log.split(":")
const idx = Number(ss[0]), ts = Number(ss[2])
if (ss[1] == "start") {
if (he < ta) ans[stk[ta - 1]] += ts - cur
stk[ta++] = idx
cur = ts
} else {
const func = stk[--ta]
ans[func] += ts - cur + 1
cur = ts + 1
}
}
return ans
};
-
时间复杂度: -
空间复杂度:
最后
给大伙通知一下 📢 :
全网最低价 LeetCode 会员目前仍可用,快来薅羊毛!!!
📅 年度会员:有效期加赠两个月!!; 季度会员:有效期加赠两周!!
🧧 年度会员:获 66.66 现金红包!!; 季度会员:获 22.22 现金红包!!
🎁 年度会员:参与当月丰厚专属实物抽奖(中奖率 > 30%)!!
专属链接:https://leetcode.cn/premium/?promoChannel=acoier
更多详情请戳 这里 。
我是宫水三叶,每天都会分享算法知识,并和大家聊聊近期的所见所闻。
欢迎关注,明天见。
更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉
相关文章:
最新,955神仙公司名单(非外企)
955 神仙公司名单(非外企) 往常爆料最多的 955 神仙公司名单通常都是集中在一线城市的外企。 例如下面这张最为流行的名单图: 最近牛客网上有同学整理出了非外企的版本,其中不乏一些耳熟能详的互联网产品。 随手把名单分享给大家。…...
牛客周赛 Round 37 C.红魔馆的馆主
非常恶心的诈骗,手玩了半小时,发现了一堆规律,比如是11的倍数的偶数数位和奇数数位要相等 还搞上了逆元,是5的倍数必须0 or 5结尾,是9的倍数必须数位之和是9的倍数结果做不出来 然后不是构造是纯纯的暴搜 直接暴力看…...
AWS监控,AWS 性能监控工具
监控云部署的性能是 IT 环境正常运行的内在条件。AWS 云是一个架构良好的框架,管理员可以使用专用的AWS 性能监控工具增强服务的功能。执行AWS监视是为了跟踪在AWS环境中积极运行的应用程序工作负载和资源。AWS监视器跟踪各种AWS云指标,以帮助提高在其上…...
PHP姓名快速匿名化工具(重组脱敏)
PHP姓名重组工具(脱敏/匿名化工具) 将excel数据姓名列粘贴提交,得到随机姓随机中间字随机尾字的重组姓名 那些年自用瞎搞的代码,今日整理成网页交提交得到结果的交互功能分享。 <?php //PHP姓名重组工具(脱敏/匿名化工具) //将excel数据姓名列粘贴…...
JAVA后端调用OpenAI接口 实现打字机效果(SSE)
SSE SSE(Server-Sent Events,服务器发送事件)是一种基于HTTP协议的通信技术,它允许服务器持续地将数据推送给客户端,而无需客户端发起请求。这种通信方式通常用于实时性要求较高的场景,如实时更新、通知、或…...
超店建站携手太洋物产,共建跨境生意增长解决方案
2024年3月21日,至真科技旗下的超店建站与太洋物产在出海业务上达成了合作意向,标志着双方共同构建海外版图的合作正式启动。此次合作充分彰显了超店建站在海外业务方面的卓越技术能力和丰富经验,赢得了太洋物产的高度认可。 当天,…...
提高企业员工生产力的办法
在现代商业环境中,提高企业员工生产力是企业持续发展的关键因素之一。员工生产力的提升不仅有助于企业提高运营效率,还能增强企业的市场竞争力。那么,如何有效地提高企业员工生产力呢?本文将就此问题进行探讨。 一、引入先进技术软…...
XML Data – Semi-Structured Data XML 数据 - 半结构化数据
Outline • Structured, Semistructured, and Unstructured Data • XML Hierarchical (Tree) Data Model • Extracting XML Documents from Relational Databases • XML Documents, DTD, and XML Schema • XML Languages 结构化、半结构化和非结构化数据 - XML 层次&#x…...
Python自动化之如何利用allure生成测试报告
Allure测试报告框架帮助你轻松实现”高大上”报告展示。本文通过示例演示如何从0到1集成Allure测试框架。重点展示了如何将Allure集成到已有的自动化测试工程中、以及如何实现报表的优化展示。Allure非常强大,支持多种语言多种测试框架,无论是Java/Pytho…...
【晴问算法】入门篇—贪心算法—区间不相交问题
题目描述 给定n个开区间,从中选择尽可能多的开区间,使得这些开区间两两没有交集。 输入描述 输出描述 输出一个整数,表示最多选择的开区间个数。 样例1输入 4 1 3 2 4 3 5 6 7 输出 3 解释 最多选择(1,3)、(3,5)、(6,7)三个区间,它…...
WPF意外无法启动?try-catch也无法捕捉?0xc0000409?
文章目录 背景尝试原因解决 背景 周六在家加了一会会的班,公司电脑没关机,然后周一上班。。。诡异的事情发生了,在家远程都能运行的程序,突然运行不起来了 尝试 我对WPF程序做了如下尝试: 修改UI框架对OnStartup方…...
微服务day05(中) -- ES索引库操作
索引库就类似数据库表,mapping映射就类似表的结构。 我们要向es中存储数据,必须先创建“库”和“表”。 2.1.mapping映射属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:字段数据类型,…...
AI智能电销机器人可以做哪些事情呢?智能机器人搭建
随着科技不断发展,选择使用电销智能机器人的行业有很多,因为它的适用性和实用性都非常广,电销智能机器人使用之后能够让企业的整体工作效率变得更加高效,全天候灵活响应也能帮助企业做好业务工作。对于一些还不太了解电销智能机器…...
别踩坑!2024年小红书代写代发机构选择指南!
在小红书平台上,一篇优质的内容往往能迅速吸引用户的关注,为品牌带来不可估量的曝光和转化。然而,对于许多品牌来说,创作高质量的小红书内容并非易事。因此,选择一家专业的小红书代写代发机构成为了不少品牌的明智之选…...
数据出路 -----pandas
Pandas 是 Python 语言的一个扩展程序库,用于数据分析。 Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据)。 数据结构 Series 是一种类似于一维数组的对象,它由一组数据(各…...
Win11右键菜单定制
0.优化目标 优化成:右键菜单优化成全量菜单选项,并精简掉我不需要的菜单选项。 具体优化步骤: 1.win11菜单恢复到win10经典状态 win11右键菜单是缩水版的,需要再次点击“显示更多选项”才能找到自己想用到的选项,再…...
将深度图转成2D激光
文章目录 大致过程具体实现运行结果大致过程 将深度图转换为2D激光扫描数据是一个在机器人和自动化领域常见的任务,尤其是在计算资源有限的情况下或当只需要2D数据时。这个过程通常涉及从深度图中选择一个水平切片(或多个切片)并将其转换为距离读数。以下是基本步骤: 确定…...
rust学习笔记(8-12)
8 集合 Rust 标准库中包含一系列被称为 集合(collections)的非常有用的数据结构。大部分其他数 据类型都代表一个特定的值,不过集合可以包含多个值。不同于内建的数组和元组类型,这些 集合指向的数据是储存在堆上的,这…...
JetPack之DataBinding基础使用
目录 一、简介二、使用2.1 使用环境2.2 xml文件绑定数据2.3 数据绑定的对象2.3.1 object2.3.2 ObseravbleField2.3.3 ObseravbleCollection 2.4 绑定数据 三、应用场景 一、简介 DataBinding是谷歌15年推出的library,DataBinding支持双向绑定,能大大减少绑定app逻辑…...
设计模式学习笔记 - 设计原则与思想总结:2.运用学过的设计原则和思想完善之前性能计数器项目
概述 在 《设计原则 - 10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现一个支持各种统计规则的性能计数器》中,我们讲解了如何对一个性能计数器框架进行分析、设计与实现,并且实践了一些设计原则和设计思想。当…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
