iT邦幫忙

2022 iThome 鐵人賽

DAY 11
0

「不解題就不能離開的房間」文字旁邊出現了凹陷。

「該不會這不是58,是5日的意思吧?」將之前拿到的線索放置到對應的凹陷處之後,學妹突然說。「所以我們連續5天解開10題應該就可以出去了!」

「如果線索不一定是數字的話⋯⋯」我把最後一個線索和第一個線索拿起來比對,就是因為最後一個線索不像數字反而像是英文的LCC,所以才對之前題目號碼的判斷產生質疑,現在看來這兩個線索可以組合在一起變成000,形狀也變得像是按鈕,不由得按了下去。

房間的一處牆壁發出亮光,顯現出一扇門,這扇門相對於離開的門小了些。「太好了!是洗手間!」

對於要在這個地方待上5天這件事的不安瞬間減緩了不少。

「趁著現在還有精神,我們先挑一下明天的題目吧?」果然因為已經滿足了當日的條件,現在開啟的題目沒有時間限制,但是也只能預覽題目,而不能送出答案。

「我們明天選這題吧?153. Find Minimum in Rotated Sorted Array雖然標示medium,但是以Kotlin的語法來說取最小值應該很簡單。」

「嗯,因為Kotlin的IntArray不管是最小值min,最大值max,平均值average,都可以直接呼叫方法,甚至要排序也有sort方法。」

「哈哈,排序問題很常出現在演算法題目裡,結果遇到Kotlin直接就被解決了。」出這題的考官可能會很傷腦筋呢。

雖然刻意挑選簡單的題目,然而,翌日解題的時候卻不是一帆風順。

class Solution {
    fun findMin(nums: IntArray): Int {
        return nums.min()
    }
}
error: type mismatch: inferred type is Int? but Int was expected

「啊,原來min方法有可能回傳Null啊。」學妹看了錯誤內容很驚訝。

我也沒注意到這點,但是我很快就想出什麼樣的邊界條件會發生這個結果。「這是發生在IntArray長度為0的時候呢,不過題目說了長度n會在1到5000這個範圍,所以我們直接加上雙驚嘆號解決這回合吧。」雙驚嘆號就是在確定不會是Null的時候大膽使用。

class Solution {
    fun findMin(nums: IntArray): Int {
        return nums.min()!!
    }
}

雖然Leetcode對這個答案只給了低排名以外沒有表示其他意見,但我很清楚min方法是O(n)解法,並沒有符合題目要求的O(log n)。

這個鑽漏洞的寫法會帶來什麼後果,這時候的我,還什麼都不知道。


上一篇
Day10: 自由選題
下一篇
Day12: immutableList初始化
系列文
不解題就不能離開的房間31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言