Leetcode刷題記(6)——有效的括號
勤勞的搬運工~
給定一個只包括 ‘(‘
,‘)‘
,‘{‘
,‘}‘
,‘[‘
,‘]‘
的字符串,判斷字符串是否有效。
有效字符串需滿足:
- 左括號必須用相同類型的右括號閉合。
- 左括號必須以正確的順序閉合。
註意空字符串可被認為是有效字符串。
示例 1:
輸入: "()" 輸出: true
示例 2:
輸入: "()[]{}" 輸出: true
解題過程:
剛開始時嘗試著把所有不符合規則或所有符合規則的情況羅列出來,用多個if語句進行判斷,被折磨了半小時後果斷放棄了,完全理不清楚,總會有一些情況沒考慮到!!!
無奈沒忍住偷偷的看了一眼別人的解答:用棧!!!數據結構真的太重要了,完全沒有想起來使用數據結構。用棧:判斷如果是左半邊括號,直接壓入棧中;如果是右半括號,則把取出棧頂元素判斷與當前元素是否匹配,匹配後彈出,不匹配直接輸出false;
最後遍歷結束若都匹配,則棧為空,輸出true。
知識點!!!
數據結構——棧的用法!!!
一點碎碎念:每天晚上兩道題差不多要一個半小時,雖然花費的時間多,但真的基礎太不牢了,以前學的沒有多練習全還給學校了,希望現在開始追還不會太晚!加油!
Leetcode刷題記(6)——有效的括號
相關推薦
Leetcode刷題記(6)——有效的括號
匹配 -c 一點 tro 過程 進行 加油! ont leet 勤勞的搬運工~ 給定一個只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串,判斷字符串是否有效。 有效字符串需滿足: 左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序閉合。
Leetcode刷題記(3)——回文數
思路 學習 lee code 一半 應該 第一次 一個 進行 瞎扯~ 回文數應該是學習編程路上永遠邁不過的一道坎了,不過這個坎應該很小很小了,基本上都能碼出來,不過也有笨的和簡單的方法,第一次碼這道題的時候就很笨,用了兩次循環把每一位上的數字取出來再和原來的每位數字對
Leetcode刷題記(8)——刪除排序數組中的重復項
blank 方法 思路 引用 num str targe 別人 ren 搬運工~ 給定一個排序數組,你需要在原地刪除重復出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。 不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間的條件下完成
leetcode 刷題(1)--- 兩數之和
給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0
leetcode 刷題(2)--- 兩數相加
nullptr solution 原因 == 表示 node etc 數字 個數字 給定兩個非空鏈表來表示兩個非負整數。位數按照逆序方式存儲,它們的每個節點只存儲單個數字。將兩數相加返回一個新的鏈表。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示例: 輸
LeetCode刷題(Java)
第一題 class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<Integer, Integer>()
leetcode 刷題 (599)
最近在刷LeetCode,從簡單的開始刷起,補一下自己code和演算法基礎。 下面是dict方面的題目: 主要用到了dict兩個主要的屬性: ①enumerate() enumerate(sequence, [start=0]) sequence -- 一個序列、迭代器或其他支援
LeetCode刷題(三)
LeetCode 是個著名的程式設計題庫,裡邊有很多面試、演算法題目,多刷刷對提高程式設計水平很有幫助,避免因為天天寫業務程式碼而停滯不前。最近玩了下挺有意思的,決定慢慢的刷起來,在這裡記錄一下我的刷
LeetCode刷題(Python)——每個節點的右向指標
題目描述 給定一個二叉樹 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } 填充它的每個 next 指標,讓這個指標指向其下一個右側節點。
leetcode 刷題(python)之漢明距離
兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。注意:0 ≤ x, y < 231.示例:輸入: x = 1, y = 4輸出: 2解釋:1 (0 0 0 1)4 (0 1 0 0)↑ ↑上面的箭頭
leecode刷題(6)-- 兩個陣列的交集II
leecode刷題(6)-- 兩個陣列的交集II 兩個陣列的交集II 描述: 給定兩個陣列,編寫一個函式來計算它們的交集。 示例: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2,2] 說明: 輸出結果中每個元素出現的次數,應與元素在兩個陣
LeetCode刷題(48)--Remove Duplicates from Sorted List II
cur表示當前所在的Node,對於重複出現的Node會移到最後一個。 pre記錄結果,res用於返回,pre的更改會體現在res上。 如果pre.next == cur,則說明沒有重複,此時pre = pre.next Node進入res; 否則,則重複,只是將pre.next 移到下
LeetCode刷題(46)--Search in Rotated Array
特別處理等於的情況 class Solution(object): def search(self, nums, target): """ :type nums: List[int] :type target: int
LeetCode刷題(50)--Word Search
DFS演算法 class Solution(object): def exist(self, board, word): """ :type board: List[List[str]] :type word: str
LeetCode刷題(49)--Minimum Window Substring
class Solution(object): def minWindow(self, s, t): """ :type s: str :type t: str :rtype: str """
LeetCode刷題(二) —— 整數拆分
題目:給定一個正整數 n,將其拆分為至少兩個正整數的和,並使這些整數的乘積最大化。 返回你可以獲得的最大乘積。例如,給定 n = 2,返回1(2 = 1 + 1);給定 n = 10,返回36(10 = 3 + 3 + 4)。注意:你可以假設 n 不小於2且不大於58。分析:
LeetCode 刷題(python) 之
移動零給定一個數組 nums, 編寫一個函式將所有 0 移動到它的末尾,同時保持非零元素的相對順序。例如, 定義 nums = [0, 1, 0, 3, 12],呼叫函式之後, nums 應為 [1, 3, 12, 0, 0]。注意事項:必須在原陣列上操作,不要為一個新陣列分
LeetCode刷題(二)
LeetCode 是個著名的程式設計題庫,裡邊有很多面試、演算法題目,多刷刷對提高程式設計水平很有幫助,避免因為天天寫業務程式碼而停滯不前。最近玩了下挺有意思的,決定慢慢的刷起來,在這裡記錄一下我的刷
LeetCode刷題(C++)——Same Tree(Easy)
Given two binary trees, write a function to check if they are equal or not. Two binary trees are c
LeetCode刷題(四)
LeetCode 是個著名的程式設計題庫,裡邊有很多面試、演算法題目,多刷刷對提高程式設計水平很有幫助,避免因為天天寫業務程式碼而停滯不前。最近玩了下挺有意思的,決定慢慢的刷起來,在這裡記錄一下我的刷