Pārlūkot izejas kodu

add 旋转数组的最小数字

tangs 2 gadi atpakaļ
vecāks
revīzija
7c0b018183

+ 46 - 0
leetcode/剑指offer/旋转数组的最小数字/main.go

@@ -0,0 +1,46 @@
+package main
+
+import (
+	"bufio"
+	"fmt"
+	"os"
+	"strconv"
+	"strings"
+)
+
+func main() {
+	var input = bufio.NewScanner(os.Stdin)
+	var output int
+	var digits []int
+	for input.Scan() {
+		line := input.Text()
+
+		digits = []int{}
+		values := strings.Split(line, " ")
+
+		for _, v := range values {
+			d, _ := strconv.Atoi(v)
+			digits = append(digits, d)
+		}
+
+		output = minArray(digits)
+		fmt.Println(output)
+	}
+}
+
+func minArray(numbers []int) int {
+	var left, right = 0, len(numbers) - 1
+	var mid int
+	for left < right {
+		mid = (left + right) / 2
+		if numbers[right] > numbers[mid] {
+			right = mid
+		} else if numbers[right] < numbers[mid] {
+			left = mid + 1
+		} else {
+			right--
+		}
+	}
+
+	return numbers[left]
+}