Home leetCode Day1
Post
Cancel

leetCode Day1

Two Sum

題目:

1
給一組數字陣列和一個數字target,找出陣列中兩數相加等於target的位置

解法:

1
建立一個hash表, 跑陣列將陣列的key和value互換存入hash表, 如果target - value有在hash表存在,代表找到結果為key和hash表中target - value的值
code

func twoSum(nums []int, target int) []int {
    tmp := make(map[int]int)

    for key, value := range nums {
        index, ok := tmp[target - value]
        if ok {
            return []int{key, index}
        }
        tmp[value] = key
    }
    
    return nil
}

Valid Parentheses

題目:

1
給一個字串只有(){}[]六個字元, 判斷這個字串是否合法? 1. 左括號一定有相應了右括號 2. 左右的括號必須是順序的 3.每一個右括號都要有一個相應的左括號

解法:

1
先判斷字串大小如果為奇數,返回false,跑迴圈,如果為左括號,將對應的右括號存入tmp中,如果為右括號,將tmp中最後存入的值拿出,判斷是否為相同的右括號,如果不同,返回false,如果相同,把tmp最後的值丟出,最後判斷tmp是否為空,如果為空,返回true,如果不為空,回傳false
code

func isValid(s string) bool {
    if len(s) % 2 == 1 {
        return false
    }
    
    tmp := []rune{}
    match := map[rune]rune {
        '(': ')',
        '[': ']',
        '{': '}',
    }
    
    for _, value := range s {
        closed, ok := match[value];
        if ok {
            tmp = append(tmp, closed)
            continue
        }
        
        l := len(tmp) - 1
        if l < 0 || value != tmp[l] {
            return false
        }
        
        tmp = tmp[:l]
    }
    
    return len(tmp) == 0
}
This post is licensed under CC BY 4.0 by the author.

Trending Tags