最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

刷題日?!狶eetcode386字典序排數(shù)

2022-04-25 01:03 作者:スレーブ_スレイヤー  | 我要投稿

給你一個整數(shù)?n?,按字典序返回范圍?[1, n]?內(nèi)所有整數(shù)。

你必須設(shè)計一個時間復(fù)雜度為?O(n)?且使用?O(1)?額外空間的算法。


開始被后面那句話唬住了愣是想不出來,但是冷靜下來以后,改變了思考方式:

結(jié)果是按照字典序來排列,那我按照字典序的規(guī)則每次讓前一個數(shù)加1不就行了嗎。

現(xiàn)在看是理所當(dāng)然的答案,但是開始的時候并沒有往這個方向想。能找到答案是因為我改變了思考方式,我想的不再是怎么得到整體的答案,即按照字典序排列的那一堆整數(shù);而是得出那個整體的其中一個答案的邏輯,再把這個邏輯應(yīng)用于每一個單獨的答案。

對于這道題而言,就是怎么根據(jù)前一個數(shù)得到當(dāng)前位置的數(shù)。

通過觀察示例發(fā)現(xiàn),字典序的+1無非兩種情況:

  1. 末尾添0.

  2. 正常+1.

正常+1和一個int型一樣,唯一的區(qū)別是進位的時候需要去掉后一位的0。然后進位還要分兩種情況,一種是數(shù)字加到比n大了,一種是低位等于9了。

于是就有了這個代碼:

結(jié)果9ms,算是慢的了但是沒什么優(yōu)化空間。然后就直接去看了官方的題解,發(fā)現(xiàn)......

官方題解的想法和我的想法是一致的,只是有一點有疑問:

number*10<=n真的可以認為number*10就是下一個字典序整數(shù)嗎?

我想找?guī)讉€反例,但是顯然是沒有的......那么反過來思考吧,末尾添0總共有幾種情況:

  1. 進位以后。第n位等于9以后,下一個數(shù)沒有第n位,下下個數(shù)的第n位一定是0。比如1239的下一個數(shù)是124,再下一個是1240,這是字典序的規(guī)則決定的。

  2. 初始值1。

第一種情況,1239既然存在就是確定小于等于n的,如果1239等于n,那么循環(huán)會直接結(jié)束,因此n一定>=1240。也就是說,num x 10絕對不會比n大。

說人話就是末尾添0還比n小的情況,只有進位以后。而字典序的規(guī)則決定了進位以后的下一個數(shù),一定是number*10。

以上。

刷題日常——Leetcode386字典序排數(shù)的評論 (共 條)

分享到微博請遵守國家法律
伽师县| 太白县| 莱芜市| 家居| 嘉义市| 泽普县| 含山县| 武宣县| 甘泉县| 淮南市| 叶城县| 利川市| 樟树市| 弥勒县| 晋江市| 邹平县| 刚察县| 南开区| 库车县| 荣成市| 鹤壁市| 石台县| 宁阳县| 邢台市| 沈丘县| 合水县| 延安市| 泰和县| 绍兴市| 遵化市| 东山县| 安远县| 江阴市| 宁城县| 余江县| 博乐市| 胶南市| 保山市| 湄潭县| 延庆县| 永修县|