重刷LeetCode(簡單篇)

2021-10-08 19:12:25 字數 2894 閱讀 7654

7. 整數反轉

9. 回文數

13. 羅馬數字轉整數

14. 最長公共字首

(2)思路與解法

20. 有效的括號

工作一年,啥都忘光了,重新搞起來!!!

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。

1.暴力求解:遍歷整個陣列

class

solution;}

}}return

newint

;}}

時間複雜度:o(n^2)

空間複雜度:o(1)

2. 雜湊表:用空間複雜度換時間,考慮每個元素與其索引相互對應–雜湊表

class

solution

for(

int i =

0; i < length; i++);

}}return

newint

;}}

時間複雜度:o(n)

空間複雜度:o(n)

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

這位大佬判斷溢位的方式牛啊!

可以參考這位大佬的思路

class

solution

return

(int

)res == res ?

(int

)res :0;

}}

整數溢位

判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

思路與上一題一致。

class

solution

return temp == res;

}}

羅馬數字包含以下七種字元: i, v, x, l,c,d 和 m。

字元 數值

i 1v 5

x 10

l 50

c 100

d 500

m 1000

例如, 羅馬數字 2 寫做 ii ,即為兩個並列的 1。12 寫做 xii ,即為 x + ii 。 27 寫做 xxvii, 即為 xx + v + ii 。

通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做 iiii,而是 iv。數字 1 在數字 5 的左邊,所表示的數等於大數 5 減小數 1 得到的數值 4 。同樣地,數字 9 表示為 ix。這個特殊的規則只適用於以下六種情況:

i 可以放在 v (5) 和 x (10) 的左邊,來表示 4 和 9。

x 可以放在 l (50) 和 c (100) 的左邊,來表示 40 和 90。

c 可以放在 d (500) 和 m (1000) 的左邊,來表示 400 和 900。

給定乙個羅馬數字,將其轉換成整數。輸入確保在 1 到 3999 的範圍內。

這道題的思路很簡單,從右往左判斷,如果左邊的比右邊的小,左邊這個數就是減法,否則是加法。

class

solution

res +=

getvalue

(s.charat

(length-1)

);for(

int j = length -

2; j >=

0; j--

)else

}return res;

}public

intgetvalue

(char c)

return res;

}}

編寫乙個函式來查詢字串陣列中的最長公共字首。

如果不存在公共字首,返回空字串 「」。

考慮先將結果字串設定為第乙個字串,結果字串一定是這個字串的子集。從第二字串開始比較,擷取相同的部分作為當前結果字串。時間負責度為o(mn)

class

solution

string res = strs[0]

;for

(int i =

1; i < strs.length; i++)}

res = res.

substring(0

, j);if

("".equals

(res))}

return res;

}}

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。

有效字串需滿足:

左括號必須用相同型別的右括號閉合。

左括號必須以正確的順序閉合。

注意空字串可被認為是有效字串。

這個題目很明顯是棧的典型應用場景。

要注意判斷一下是否為空串。

class

solution

if(len ==0)

stack

stack =

newstack

(); stack.

push

(s.charat(0

));for

(int i =

1; i < len; i++

)else}if

(stack.

size()

==0)else

}public

static

boolean

comparison

(character a, character b)')

return

false;}

}

leetcode刷題筆記(簡單篇) 1 7

二 no7.整數反轉 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums ...

leetcode刷題筆記(簡單篇) 88 100

no100.相同的樹 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums...

演算法 簡單篇

演算法分析 設n 尾部0的數量的函式為f n 易得尾部0的數量由n!中2和5的因數數量決定,因為2的因數很多很多,故只需要考慮有幾個5 f 1 0 f 2 0 f 3 0 f 4 0 f 5 1 f n 5k 5 k 1 5 k 2 5 1 a 其中k,a是正整數,且a不能被5整除 5 k a k ...