LeetCode 刷題記錄(2)

2021-10-05 16:32:12 字數 2457 閱讀 4046

leetcode標籤「字串」、列表「top100」的兩道難度簡單的題目。

題目描述:

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

有效字串需滿足:

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

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

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

示例 1:

輸入: 「()」

輸出: true

示例 2:

輸入: 「(){}」

輸出: true

示例 3:

輸入: 「(]」

輸出: false

示例 4:

輸入: 「([)]」

輸出: false

示例 5:

輸入: 「」

輸出: true

題解:1.利用遇到開括號時將其放入棧,遇到閉括號時判斷棧是否為空(為空則此前無push進對應的開括號,此字串非法),

棧不為空則從棧中pop出棧頂元素判斷括號型別是否一致,不一致證明此閉括號無對應開括號,字串非法。

最終棧為空則字串滿足要求,不為空則有不對應的括號存在

class

solution

stack

stack =

newstack

();for

(char c : s.

tochararray()

)break;}

case

'}':

}break

;case

']':

break;}

default:}

}return stack.

isempty();}}

2.簡潔**,同樣利用棧,遇到開括號時直接在棧中存入對應的閉括號遇到閉括號則直接判斷和棧頂元素是否相同即可。

最終棧為空則字串滿足要求,不為空則有不對應的括號存在

class

solution

;else

if(c==

'[')

;else

if(c=='')

};else

if(stack.

isempty()

||c!=stack.

pop())

;}return stack.

isempty();}}

題目描述:

將兩個公升序鍊錶合併為乙個新的公升序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。

示例:

輸入:1->2->4, 1->3->4

輸出:1->1->2->3->4->4

題解:1.建立一條新鍊錶,乙個乙個對比兩鍊錶元素的大小,滿足條件的元素放入新鍊錶。(注意需要乙個引用始終引用著新鍊錶的頭部,避免在合併過程中,頭部引用丟失)

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

else

// 引用始終引用新鍊錶的最後乙個元素

newlistnode = newlistnode.next;

}// 其中一條鍊錶為空,則將另一條鍊錶剩餘元素連線在新鍊錶後

if(l1 == null)

if(l2 == null)

return header.next;

}}

有些地方表達的意思可能不是很準確還有可能存在錯誤,有問題請提出,感謝❤

leetcode刷題記錄

我覺得每天來兩道,練習練習,再看看人家是怎麼優化的。1.給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。c 暴力求解,204ms,9.1m class solution for index,num in enumerate ...

LeetCode刷題記錄

動態規劃和貪心演算法的異同點 class solution throw newruntimeexception 時間複雜度 o n 2 對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 o n o n 的時間。因此時間複雜度為 o n 2 需要一種方法,尋找符合要求的元...

leetcode刷題記錄

工作之餘刷刷題排解下寂寞 1 面試題66.構建乘積陣列 解題思路 題目要求可以簡化為求陣列中任意乙個元素左右兩邊所有元素的乘積。偷懶就用了乙個套路,練習了p c c python class solution def constructarr self,a list int list int 除法是...