【Golang】Go语言面试题 编程题 有个游戏角色的技能对敌方某个玩家攻击后,该敌方玩家会进入5秒的中毒状态(中毒状态没结束再次被攻击,则中毒状态重新计时直至5秒后结束) ,现在根据给定的数组,将

有个游戏角色的技能对敌方某个玩家攻击后,该敌方玩家会进入5秒的中毒状态(中毒状态没结束再次被攻击,则中毒状态重新计时直至5秒后结束)现在根据给定的数组,将其每个元素取绝对值并按从小到大排列后,当 作这个技能的攻击时间序列,请输出被攻击对象中毒时间总长

  1. 你可以想想王者荣耀的扁鹊,扁鹊一扔毒包,对方就中毒了,中毒时间5秒,
  2. 假如在中毒时再次扔毒包,他就在次中毒时间5秒,
  3. 如果中毒时间结束啦,再次扔毒包右中毒
package main

import (
	"fmt"
	"sort"
)


func poiso(x []int)  int {
	//对传过来的数组从小到大排序
	sort.Slice(x, func(i, j int) bool {
		return  x[i]<x[j]
	})
	//定义总的中毒时间
	var time int
	//遍历数组
	for i := 0; i < len(x)-1; i++ {
	//如果后一个元素减去前一个元素大于5秒
		if x[i+1]-x[i]>=5{
			time=time+5
		}else {//如果后一个元素减去前一个元素大于5秒
			time=time+(x[i+1]-x[i])
		}
	}
    //数组中最后一个元素时间仍毒包,会中毒5秒
	time =time+5
	fmt.Println(time)
	return time
}

func main() {
	//ret:=poiso([]int{1,2,3,9,10,90})
	ret:=poiso([]int{1,2,3,6})

      fmt.Println(ret)
}

你可能感兴趣的:(Golang笔试题,面试题,golang)