【脑筋急转弯】502. IPO

2023-10-14 19:50
文章标签 502 ipo 急转弯 脑筋

本文主要是介绍【脑筋急转弯】502. IPO,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 题目描述

假设 力扣(LeetCode)即将开始 IPO 。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。帮助 力扣 设计完成最多 k 个不同项目后得到最大总资本的方式。

给你 n 个项目。对于每个项目 i ,它都有一个纯利润 profits[i] ,和启动该项目需要的最小资本 capital[i]

最初,你的资本为 w 。当你完成一个项目时,你将获得纯利润,且利润将被添加到你的总资本中。

总而言之,从给定项目中选择 最多 k 个不同项目的列表,以 最大化最终资本 ,并输出最终可获得的最多资本。

答案保证在 32 位有符号整数范围内。

示例 1:

输入:k = 2, w = 0, profits = [1,2,3], capital = [0,1,1]
输出:4
解释:
由于你的初始资本为 0,你仅可以从 0 号项目开始。
在完成后,你将获得 1 的利润,你的总资本将变为 1。
此时你可以选择开始 1 号或 2 号项目。
由于你最多可以选择两个项目,所以你需要完成 2 号项目以获得最大的资本。
因此,输出最后最大化的资本,为 0 + 1 + 3 = 4。

示例 2:

输入:k = 3, w = 0, profits = [1,2,3], capital = [0,1,2]
输出:6

提示:

1 <= k <= 1 0 5 10^5 105
0 <= w <= 1 0 9 10^9 109
n == profits.length
n == capital.length
1 <= n <= 1 0 5 10^5 105
0 <= profits[i] <= 1 0 4 10^4 104
0 <= capital[i] <= 1 0 9 10^9 109


来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ipo


2. 解答

2.1 朴素求解

也就是直接提取题意,按照题意,需要进行k轮,每次我们去寻找满足capital[i]<=w 且 profits[i]最大的那个下标,也就是我们下一轮的目标。代码如下:

class Solution {public int findMaximizedCapital(int k, int w, int[] profits, int[] capital) {boolean[] used = new boolean[capital.length];int sum = w;for (int i = 0; i < k; i++) { // choose k stepint idx = getMaxProfitIdx(capital, profits, used, w);if(idx == -1) return sum;used[idx] = true;w += profits[idx];sum += profits[idx];}return sum;}// 获取可选择的最大利润private int getMaxProfitIdx(int[] capital, int[] profits, boolean[] used, int w) {int maxProfits = Integer.MIN_VALUE;int idx = -1;for (int i = 0; i < capital.length; i++) {if(used[i] || (idx != -1 && capital[i] == capital[idx] && profits[i] == profits[idx])) continue;if(capital[i] <= w && maxProfits < profits[i]){maxProfits = profits[i];idx = i;}}return idx;}
}

在这里插入图片描述

不出意外超时了。

其实可以预料,因为数组的长度为 1 0 5 10^5 105,那么对于一个时间复杂度为 O ( n 2 ) O(n^2) O(n2)的算法来说是通不过的。这一点需要强化记忆。

2.2 堆排序

因为我们每次是找寻满足条件的最大利润,故而可以使用堆排序来做。

class Solution {public int findMaximizedCapital(int k, int w, int[] profits, int[] capital) {int len = capital.length;boolean[] used = new boolean[len];int[][] pairs = new int[len][2];for (int i = 0; i < len; i++) {pairs[i][0] = profits[i];pairs[i][1] = capital[i];}Arrays.sort(pairs, (o1, o2) -> o1[1] - o2[1]);PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2 - o1);int curIdx = 0;for (int i = 0; i < k; i++) { // choose k stepwhile(curIdx < len && pairs[curIdx][1] <= w){queue.add(pairs[curIdx][0]);curIdx++;}if(!queue.isEmpty()){w += queue.poll();}else break;}return w;}
}

在这里插入图片描述


Thanks

  • https://leetcode-cn.com/problems/ipo

这篇关于【脑筋急转弯】502. IPO的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/212766

相关文章

nacos Spring cloud 报错 URI is not absolute、service not found、502 bad gateway

- 服务没找到,请加入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency> - 如果是 "URI is not absolute" , 将URL变成固定的字符串,例如

博科测试IPO上市

8月26日,北京博科测试系统股份有限公司创业板IPO提交注册。 公司简介 博科测试是一家通过采用现代测试与试验技术来提供智能测试综合解决方案的供应商,主营业务为伺服液压测试设备和汽车测试试验设备的研发、设计、制造、销售、系统集成等综合服务。 博科测试IPO上市情况 博科测试本次公开发行股票数量不超过1472.43万股,拟募集资金为7.50亿元,其中50675.28万元用于高端检测设备生产项

IPO程序

I:Input  输入 P:  Process  处理 O:  Output  输出 1 .  Print (1)语法结构:           print ( 输出内容 ) (2)  print ()函数完整的语法格式:           print ( value,...,sep = ' ' , end = ' \n ' ,file = None ) 补充: print

两句话解决ChatGPT 502 Bad Gateway问题

一般是DNS的问题 管理员身份运行cmd输入ipconfig /flushdns输入netsh winsock reset重启电脑即可 这种问题很容易在长时间不关闭窗口,或者win发布更新补丁时出现

nginx自定义500,502,504错误页面无法跳转

1、自定一个页面,这个页面是一个链接地址可以直接访问的。 以下是nginx的配置: location / {             proxy_pass http://tomcat_app108;             #client_max_body_size 1000m;             proxy_set_header Host $host;             p

修复 502 Bad Gateway 错误的 6 种方法

通常,我们在使用网站时可能会遇到一系列错误。有些非常常见,例如 404,有些则不太常见,例如 101。这些被称为 HTTP 状态代码。其中,502 错误是某种服务器错误。那么,让我们先了解一下 Bad Gateway 502 的含义。   HTTP 502 错误网关是两台服务器之间的通信错误。在这种情况下,充当网关或代理的一台服务器从上游服务器收到无效响应。   如何修复 502 错误

看了让人吐血的146个脑筋急转弯问题

1 谁是万兽之王?●动物园园长 2 什么样的人死后还会出现?●电影中的人 3 什么帽不能戴?●螺帽 4 书店里买不到什么书?●遗书 5 大象的左耳朵像什么?●右耳朵 6 什么水永远用不完?●泪水 7 什么东西有五个头,但人不觉得它怪呢?●手,脚 8 家人问医生病人的情况,医生只举起5个手指, 家人就哭了,是什么原因呢? ●三长两短 9 把一只鸡和一只鹅同时放在冰山上,为什么鸡死了鹅没死?●鹅是企

丘钛微注册陷入“停滞”IPO中止:营收净利润连年下滑,毛利率骤降

《港湾商业观察》施子夫  王璐 从2021年6月末算起,在冲刺创业板这条道路上,昆山丘钛微电子科技股份有限公司(以下简称,丘钛微)已经耗时了三年。 实际上在三年中,丘钛微早在2022年8月17日就首发过会,其后于同年12月30日还提交了注册申请,时至今日仍未注册成功。 今年3月末,据深交所网站显示,丘钛微上市进程宣告中止。​ 业绩连年下滑,巨额分红超净利润 有市场人士认为

521. 最长特殊序列 Ⅰ(Rust单百解法-脑筋急转弯)

题目 给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列 的长度。如果不存在,则返回 -1 。 「最长特殊序列」 定义如下:该序列为 某字符串独有的最长 子序列 (即不能是其他字符串的子序列) 。 字符串 s 的子序列是在从 s 中删除任意数量的字符后可以获得的字符串。 例如,“abc” 是 “aebdc” 的子序列,因为删除 “aebdc” 中斜体加粗的字符可以得到 “a

Nginx实战:故障处理_后端服务正常,nginx偶发502(Bad Gateway)

一、故障场景 用户访问服务偶发报错【502 Bad Gateway】,但是服务后端正常运行。架构如下: #mermaid-svg-4dDszusKEuPgIPlt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-4dDszusKEuPgIPlt .erro