三七互娱-Go社招-base广州-8.6
算法
买股票:给定一个数组prices ,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子!卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。
示例1:输入:[7,1,5,3,6,4]输出:5
解释:在第2天(股票价格=1)的时候买入,在第5天(股票价格=6)的时候卖出,最大利润=6-1=5。注意利润不能是7-1=6,因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
示例2:输入:prices= [7,6,4,3,1]输出:0
解释:在这种情况下,没有交易完成,所以最大利润为0。 提示:1<= prices.length <= 105 0 <= prices[]<= 104 给出思路步骤和代码 go
解题思路
要解决这个问题,我们可以采用一次遍历的方法。具体思路是,我们维护两个变量:一个是到目前为止的最低价格 minPrice,另一个是目前为止的最大利润 maxProfit。我们从左到右遍历价格数组,对于每一天的价格,我们进行以下操作:
如果当前价格比 minPrice 还低,那么更新 minPrice 为当前价格,因为这意味着我们可以在更低的价格买入股票。 否则,我们计算当前价格卖出股票的利润(即当前价格减去 minPrice),如果这个利润大于 maxProfit,那么更新 maxProfit。
遍历结束后,maxProfit 就是我们所求的最大利润。
package main
import (
"fmt"
)
func maxProfit(prices []int) int {
if len(prices) == 0 {
return 0
}
minPrice := prices[0]
maxProfit := 0
for _, price := range prices {
if price < minPrice {
minPrice = price
} else if price-minPrice > maxProfit {
maxProfit = price - minPrice
}
}
return maxProfit
}
func main() {
prices := []int{7, 1, 5, 3, 6, 4}
fmt.Println(maxProfit(prices)) // 输出: 5
prices2 := []int{7, 6, 4, 3, 1}
fmt.Println(maxProfit(prices2)) // 输出: 0
}
一面
- 在哪里?在职?
- 自我介绍
- 23年毕业么?
- 技术
- k8s
- 讲一下k8s大概的网络原理是什么样子
- service之间的调用是怎么个调用方法呢
- 如果想进入到具体的pod里面,用什么命令来执行?大概加哪几个参数啊
- 怎么实现负载均衡的呢?
- kafka
- 能说一下kafka是怎么确保数据的一个消费的吗?
- 比如说现在有一百万数据,消费端在消费的时候已经消费了50万数据,挂掉了,下一次再启动消费的时候怎么确保是从第50万条开始消费的,而不是从第一条开始消费的?
- 那他是通过什么方式知道,你这一个进程来从50万开始。 既然是订阅是有多消费端的嘛,假如是a消费,那他怎么知道,按照你的说法,a消费重新来的时候从50万开始,他怎么知道是a呢
- kafka的分区策略是什么样子的
- kafka的复制机制是什么样子的
- 你前面说的分区策略只说了一个,他有哪几种分区策略啊?默认的是哪个策略
- kafka默认的端口号是多少
- mysql
- 怎么知道这一个sql语句的性能怎么样
- mysql的默认的端口号呢
- 通过什么命令可以查看当前mysq有哪些进程(或者说有哪些查询语句在执行)在执行着呢,用什么方式来看?
- 用什么命令去看这个建表的语句
- 看这个表有哪些索引怎么看
- mysql有哪些存储引擎,区别是什么
- 想要实现行级锁他的前提条件是什么
- 什么是行级锁什么是表级锁
- 事务的原子性是指什么
- sql语句怎么来实现一条锁呢,想实现一条锁的话,sql语句怎么来执行啊,锁等待的这条sql要怎么写啊
- 怎么解锁呢
- 换个思路来说,怎么确保你主动这个锁完之后,一定会把他解锁,不至于说解锁失败,会长期的占用着这个锁
- redis
- 有哪几种数据结构
- 队列的时候,用什么命令往里写数据,什么命令取数据
- redis默认端口号多少
- 项目
- 支付相关
- 游戏项目,列了很多,你主要负责哪一块东西啊
- 用户模块也是你开发的吗
- session和cookie有什么区别呀
- 如果说cookie被禁用掉的话sessionID还能用吗?那用什么方式来做呢?你这个session在服务端用的什么存储的
- 如果说用户改了一下密码怎么把他踢下线呢?假如说两部手机,a、b手机都登录了号,b手机把密码改掉了,现在业务需求是b把密码改掉了a手机登录失效不能玩,要怎么做这个事情?
- 你们的中台是b端的是吧,那对应的c端业务是什么,我看你有广告投放,实际上c端投放也算是之一嘛
- 最高峰的是每天创建多少广告啊
- 这个中台哪个菜单用的人最多
- 当时几个人做这个事情,怎么分工的呢,你负责哪一个模块
- 什么叫做ARPU啊
- CPM
- 你们抓取过来的数据你们主要看哪些指标?ROI是什么意思,如果你程序这边算法的话,分子分母分别是什么
- 如果说你再调他们接口的时候超时了你会怎么处理?或者怎么确保你拉回来的数据不会重复也不会丢?
- 在做这个项目的过程中你遇到过的最大的问题是是什么
- 这个游戏是网上比较火的还是你们自己搞的,有发行吗?那这个 DAU 最高的是有多少
- 你们服务端最高峰在什么时候,或者说你们用户最高峰是在几点
- 你们投的是哪个国家?
- 全球的话你们服务器怎么部署的?
- 部署在美国的话那其他国家网络延迟问题怎么解决呢?
- 怎么保证数据一致性呢
- 这种跨地域的,跨国的,跨海洋的,丢包是一个很正常的一个现象
- 其他
- 有什么兴趣爱好
- 最近有关注过哪个GitHub的大牛吗?或者项目
- 真正的兴趣爱好,不是为了找工作
- 运动的爱好
- 接下来自己两到三年自己的一个职业规划是什么样的
- 有没有什么样的一个目标
- 有没有自己的一个具体的规划,想成为你导师这样的人你觉得需要做哪些事情呢
- 除了刷牛客和GitHub之外,自己有做过什么其他的学习吗
- bluebell这个项目对你有什么收获吗
- 近期有什么呢
- 用三个词总结自己的优点
- 用三个词总结自己的缺点
- 你们大学课程有学一些算法课吗
- 能大概说一下红黑树是什么吗
- 反问