leetcode 第 311 場演算法比賽

語言: CN / TW / HK

零、背景

這次比賽是面試題,手速拼不過大家了。

一、最小偶倍數

題意:給你一個正整數 n ,返回 2 和 n 的最小公倍數(正整數)。

思路:偶數是自己,奇數乘二。

二、最長的字母序連續子字串的長度

題意:給一個字串,求最長的字母連續的子字串。

思路:記錄上個字母為結尾的最優答案。

當前字母連續了,最優答案加一,否則最優答案置為一。

三、反轉二叉樹的奇數層

題意:給一個完全二叉樹,反轉奇數層的節點。

思路1:樹轉陣列,奇數層反轉,陣列轉樹。

思路2:遞迴轉換。

假設兩個子樹的根節點需要交換,則根的兒子不能交換。

所以,交換根之後,四個兒子需要交換回原來的位置,即左兒子與左兒子交換,右兒子與右兒子交換。

兒子的位置需要保持不動,兒子的兒子就需要進行交換。

四、字串的字首分數和

題意:給一個字串陣列,求每個字串所有字首子串的得分和。

字串的得分:以字串為字首的字串個數。

思路:題目有點繞,相當於求兩層字首。

暴力做法:列舉所有字首,然後迴圈判斷這個字首是不是其他字串的字首。

trie 樹做法:

建樹,每個節點記錄字首的個數,記為 k。

查詢:查詢的路徑上的 k 求和。

五、最後

這次比賽比較簡單。

加油,演算法人。

《完》

-EOF-

本文公眾號:天空的程式碼世界

個人微訊號:tiankonguse

公眾號ID:tiankonguse-code