diff --git a/plus_one/plus_one.go b/plus_one/plus_one.go index ab91ce3..b9711b7 100644 --- a/plus_one/plus_one.go +++ b/plus_one/plus_one.go @@ -2,7 +2,7 @@ package plus_one func plusOne(digits []int) []int { carry := 1 - for i := len(digits); i >= 0; i++ { + for i := len(digits)-1; i >= 0; i-- { sum := carry + digits[i] if sum < 10 { digits[i] = sum diff --git a/remove_element/remove_element.go b/remove_element/remove_element.go index 1765abf..408ac94 100644 --- a/remove_element/remove_element.go +++ b/remove_element/remove_element.go @@ -1,13 +1,13 @@ package remove_element func removeElement(nums []int, val int) int { - start := 0 - for i := 0; i < len(nums); i++ { - if nums[i] == val { - continue - } - nums[start] = nums[i] - start++ - } - return start + l := 0 + for _, v := range nums { + if v != val { + nums[l] = v + l++ + } + } + + return l } diff --git a/valid_parentheses/valid_parentheses.go b/valid_parentheses/valid_parentheses.go index 3de3451..54151ed 100644 --- a/valid_parentheses/valid_parentheses.go +++ b/valid_parentheses/valid_parentheses.go @@ -1,49 +1,26 @@ package valid_parentheses func isValid(s string) bool { - if len(s)%2 != 0 { - return false - } - left := map[byte]struct{}{ - '(': struct{}{}, - '[': struct{}{}, - '{': struct{}{}, - } - right := map[byte]struct{}{ - ')': struct{}{}, - ']': struct{}{}, - '}': struct{}{}, - } - bytes := []byte(s) - stack := []byte{} - for i := range bytes { - if _, ok := left[bytes[i]]; ok { - stack = append(stack, bytes[i]) - } else if _, ok = right[bytes[i]]; ok { - if len(stack) == 0 { - return false - } - switch stack[len(stack)-1] { - case '(': - if bytes[i] != ')' { - return false - } - case '[': - if bytes[i] != ']' { - return false - } - case '{': - if bytes[i] != '}' { - return false - } - } - stack = stack[:len(stack)-1] - } else { - return false - } - } - if len(stack) == 0 { - return true - } - return false + m := map[rune]rune{ + '(': ')', + '[': ']', + '{': '}', + } + stack := make([]rune, len(s)) + top := 0 + for _, c := range s { + switch c { + case '(', '[', '{': + stack[top] = m[c] + top++ + case ')', ']', '}': + if top > 0 && stack[top-1] == c { + top-- + } else { + return false + } + } + } + + return top == 0 }