天天看點

Leetcode 每日一題 跳水闆(golang)

題目

Leetcode 每日一題 跳水闆(golang)

分析思路

運用數學方法,考慮以下情況

1.k=0,則不能建造任何跳水闆,傳回空;

2.shorter=longer 短跳水闆長度=長跳水闆長度,那麼建造跳水闆的長度是唯一的,都是shorter,傳回一個長度為1,組中元素為shorter * k的數組;

3.一般情況 shorter 不等于longer 且k>0,此時預設全部用短木闆是一種,然後每多替換一個短木闆為長木闆就是一種新組合,是以又有k種組合,是以一共有k+1種長度

接下來判斷兩種組合,

1>有 i塊長木闆,則跳水闆的長度是 shorter*(k-i)+longer* i;

2>有 k-i塊長木闆,則跳水闆的長度是 shorter * i+longer * (k-i);

則兩種不同的組合下的跳水闆長度之差為

-shorterk-longer(k-2i) <0

由此可見,任意兩種不同的組合下的跳水闆長度都是不一樣的,而且使用的長木闆越多,跳水闆的長度越大

于是給出以下代碼(golang)

func divingBoard(shorter int, longer int, k int) []int {
	length :=make([]int,k+1) 
	if k==0{
	return nil    //判斷k是否為0
	}
	if shorter == longer{
		return []int{shorter*k}  //判斷短跳水闆和長跳水闆長度是否相同
	}
		for i:=0;i<=k;i++{
			length[i]=shorter*(k-i)+longer*i   //從小到大輸出所有可能
	return length
	}