三七互娱-Go社招-base广州-8.6

alt

算法

买股票:给定一个数组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
}

一面

  1. 在哪里?在职?
  2. 自我介绍
  3. 23年毕业么?
  4. 技术
  5. k8s
    1. 讲一下k8s大概的网络原理是什么样子
    2. service之间的调用是怎么个调用方法呢
    3. 如果想进入到具体的pod里面,用什么命令来执行?大概加哪几个参数啊
    4. 怎么实现负载均衡的呢?
  6. kafka
    1. 能说一下kafka是怎么确保数据的一个消费的吗?
    2. 比如说现在有一百万数据,消费端在消费的时候已经消费了50万数据,挂掉了,下一次再启动消费的时候怎么确保是从第50万条开始消费的,而不是从第一条开始消费的?
    3. 那他是通过什么方式知道,你这一个进程来从50万开始。 既然是订阅是有多消费端的嘛,假如是a消费,那他怎么知道,按照你的说法,a消费重新来的时候从50万开始,他怎么知道是a呢
    4. kafka的分区策略是什么样子的
    5. kafka的复制机制是什么样子的
    6. 你前面说的分区策略只说了一个,他有哪几种分区策略啊?默认的是哪个策略
    7. kafka默认的端口号是多少
  7. mysql
    1. 怎么知道这一个sql语句的性能怎么样
    2. mysql的默认的端口号呢
    3. 通过什么命令可以查看当前mysq有哪些进程(或者说有哪些查询语句在执行)在执行着呢,用什么方式来看?
    4. 用什么命令去看这个建表的语句
    5. 看这个表有哪些索引怎么看
    6. mysql有哪些存储引擎,区别是什么
    7. 想要实现行级锁他的前提条件是什么
    8. 什么是行级锁什么是表级锁
    9. 事务的原子性是指什么
    10. sql语句怎么来实现一条锁呢,想实现一条锁的话,sql语句怎么来执行啊,锁等待的这条sql要怎么写啊
    11. 怎么解锁呢
    12. 换个思路来说,怎么确保你主动这个锁完之后,一定会把他解锁,不至于说解锁失败,会长期的占用着这个锁
  8. redis
    1. 有哪几种数据结构
    2. 队列的时候,用什么命令往里写数据,什么命令取数据
    3. redis默认端口号多少
  9. 项目
    1. 支付相关
    2. 游戏项目,列了很多,你主要负责哪一块东西啊
    3. 用户模块也是你开发的吗
    4. session和cookie有什么区别呀
    5. 如果说cookie被禁用掉的话sessionID还能用吗?那用什么方式来做呢?你这个session在服务端用的什么存储的
    6. 如果说用户改了一下密码怎么把他踢下线呢?假如说两部手机,a、b手机都登录了号,b手机把密码改掉了,现在业务需求是b把密码改掉了a手机登录失效不能玩,要怎么做这个事情?
    7. 你们的中台是b端的是吧,那对应的c端业务是什么,我看你有广告投放,实际上c端投放也算是之一嘛
    8. 最高峰的是每天创建多少广告啊
    9. 这个中台哪个菜单用的人最多
    10. 当时几个人做这个事情,怎么分工的呢,你负责哪一个模块
    11. 什么叫做ARPU啊
    12. CPM
    13. 你们抓取过来的数据你们主要看哪些指标?ROI是什么意思,如果你程序这边算法的话,分子分母分别是什么
    14. 如果说你再调他们接口的时候超时了你会怎么处理?或者怎么确保你拉回来的数据不会重复也不会丢?
    15. 在做这个项目的过程中你遇到过的最大的问题是是什么
    16. 这个游戏是网上比较火的还是你们自己搞的,有发行吗?那这个 DAU 最高的是有多少
    17. 你们服务端最高峰在什么时候,或者说你们用户最高峰是在几点
    18. 你们投的是哪个国家?
    19. 全球的话你们服务器怎么部署的?
    20. 部署在美国的话那其他国家网络延迟问题怎么解决呢?
    21. 怎么保证数据一致性呢
    22. 这种跨地域的,跨国的,跨海洋的,丢包是一个很正常的一个现象
  10. 其他
    1. 有什么兴趣爱好
    2. 最近有关注过哪个GitHub的大牛吗?或者项目
    3. 真正的兴趣爱好,不是为了找工作
    4. 运动的爱好
    5. 接下来自己两到三年自己的一个职业规划是什么样的
    6. 有没有什么样的一个目标
    7. 有没有自己的一个具体的规划,想成为你导师这样的人你觉得需要做哪些事情呢
    8. 除了刷牛客和GitHub之外,自己有做过什么其他的学习吗
    9. bluebell这个项目对你有什么收获吗
    10. 近期有什么呢
    11. 用三个词总结自己的优点
    12. 用三个词总结自己的缺点
    13. 你们大学课程有学一些算法课吗
    14. 能大概说一下红黑树是什么吗
  11. 反问
#三七互娱##Golang社招##广州##社招##游戏公司#
全部评论

相关推荐

评论
5
10
分享

创作者周榜

更多
牛客网
牛客企业服务