A:35. 插入搜索位置#
給定一個排序數組和一個目標值,在數組中找到目標值,並返回其索引。如果目標值不存在於數組中,返回它將會被按順序插入的位置。
請必須使用時間複雜度為 O (log n) 的算法。
示例 1:
輸入: nums = [1,3,5,6], target = 5
輸出: 2
示例 2:
輸入: nums = [1,3,5,6], target = 2
輸出: 1
示例 3:
輸入: nums = [1,3,5,6], target = 7
輸出: 4
提示:
- 1 <= nums.length <= 10^4
- -10^4 <= nums[i] <= 10^4
- nums 為 無重複元素 的 升序 排列數組
- -10^4 <= target <= 10^4
function searchInsert(nums: number[], target: number): number {
let left = 0
let right = nums.length - 1
if (target <= nums[0]) {
return left
}
if (target > nums[right]) {
return right + 1
}
let mid = Math.floor((left + right) / 2)
while (left < right - 1) {
const midValue = nums[mid]
if (midValue === target) {
return mid
}
if (midValue < target) {
left = mid
} else {
right = mid
}
mid = Math.floor((left + right) / 2)
}
return right
}
提交結果為:
65/65 cases passed (64 ms)
Your runtime beats 72.07 % of typescript submissions
Your memory usage beats 52.45 % of typescript submissions (43.7 MB)
看到題目要求使用時間複雜度為 O(logn)
的算法,基本可以判斷為使用二分法,前幾天剛做過一道二分法的題目,這次上手更快了。寫的時候在邊界條件的判斷上還是花了一些時間去想的。首先是考慮 mid
始終是 left
和 right
中間的一個值,那就無法覆蓋到超出這個邊界的情況,因此上來先判斷了下 target 是不是會超出最大邊界的,是則返回邊界情況。然後再是 left
和 right
會不斷壓縮,直到壓縮到 left === right - 1
的情況,這時候區間已經無法再壓縮了,因此要終止循環,最後因為一開始我們已經提前確定了值不會超出 left
和 right
的範圍,因此如果中間過程中沒有命中某一項,那直接範圍 right
就是正確的插入位置。
R:How to Engineer the Perfect Stable Diffusion Prompt#
以後的文章都會通過 QA 法來記錄總結,這樣會更容易掌握文章的內容,後續回顧也會更加方便。
Q:為什麼高質量的 Prompt 對使用 Stable Diffusion 來說很重要?
它給模型傳達指令和操作的框架,影響模型的執行,從而影響結果的質量。掌握 Prompt Engineering 的技巧可以讓藝術家探索藝術路徑、實驗藝術風格,甚至在 AI 藝術領域定義資產的藝術身份。
Q:創建有效的 Stable Diffusion Prompt 的步驟是什麼?
- 定義圖片類型
照片 (photograph)、素描 (sketch)、3D 渲染 (3D render) 還是繪畫 (painting),定義好類型可以作為很好的基礎 - 定義主體
清晰定義主體和它的屬性。主體可以是物體、人、風景或其他圖像中的核心元素 - 定義場景
定義主體所在的環境,可以是背景細節、天氣條件、一天的時間等。描述得越清晰效果越好 - 定義風格
比如現實 (realism)、超現實 (surrealism)、印象派 (impressionism)。或者是某位藝術家的風格 - 說明光照細節
使用特定詞語說明光照條件,比如背光 (backlight)、燭光 (candlelight) 或自然光 (natural lighting);說明細緻程度,比如高度細緻 (highly detailed)、顆粒感 (grainy) 或光滑 (smooth) - 聲明構圖
定義圖中元素的佈局。比如鳥瞰圖 (aerail view)、特寫 (close-up)、廣角 (wide-angle) 或其他構圖方式。 - 定義色彩風格
如果有色彩偏好也需要定義,比如三色配合 (triadic color scheme) 或者水洗配色 (washed color) - 避免過度複雜
過度複雜或矛盾的指令可能會讓模型無法輸出質量好的結果
T:SeamlessM4T - 多合一的多語言、多模態模型#
Meta AI 最新開源了一個叫做 SeamlessM4T 的多語言多模態模型,可以進行 100 多種語音到文本、語音到語音、文本到文本的翻譯和語音識別任務。
S:《李笑來:我的讀書經驗》摘錄#
之前摘錄過一段李笑來老師這篇文章裡的一句話了,感覺李笑來老師這篇文章寫得真的不錯,今天就又想起來當時看到頗有感觸的一句話:
批量閱讀學術文獻,就好像是從父母的庇護下離開而後獨立生存一樣,剛開始的時候甚至有一點害怕,但是,沒有過多久,就開始可憐起過去的自己。過去怎麼那麼傻,竟然總是要衣來伸手,飯來張口,不來什麼,就都沒有。
本科教育結束之後,理論上來講,就應該把大部分時間用來讀學術文獻,很可惜,貌似在我們國家,根本就沒有這個概念。學術研究被翻譯成通俗讀物,這個時間滯後實在是太嚴重了。
最近也讀了一點關於大語言模型的論文,一方面感受到了李笑來老師說的 “剛開始有點害怕,沒過多久就覺得早該如此” 的感覺,論文確實是一個能了解關心的領域的前沿的快速有效的路徑,閱讀論文是一個值得養成的習慣。
Reference: