邓心一 6 سال پیش
والد
کامیت
b02b147b25
2فایلهای تغییر یافته به همراه46 افزوده شده و 0 حذف شده
  1. 20 0
      medium/299.bulls-and-cows.go
  2. 26 0
      medium/300.longest-increasing-subsequence.go

+ 20 - 0
medium/299.bulls-and-cows.go

@@ -0,0 +1,20 @@
+func getHint(secret string, guess string) string {
+	s, g := make([]int, 10), make([]int, 10)
+	bulls, cows := 0, 0
+	for i := range secret {
+		if secret[i] == guess[i] {
+			bulls++
+		} else {
+			s[int(secret[i]-'0')]++
+			g[int(guess[i]-'0')]++
+		}
+	}
+	for i := 0; i < 10; i++ {
+		if s[i] < g[i] {
+			cows += s[i]
+		} else {
+			cows += g[i]
+		}
+	}
+	return fmt.Sprintf("%dA%dB", bulls, cows)
+}

+ 26 - 0
medium/300.longest-increasing-subsequence.go

@@ -0,0 +1,26 @@
+func lengthOfLIS(nums []int) int {
+	n := len(nums)
+	if n <= 1 {
+		return n
+	}
+	lis := make([]int, n) // DP, O(n^2) time complexity
+	lis[0] = 1
+	for i := 1; i < n; i *= 2 {
+		copy(lis[i:], lis[:i])
+	}
+	for i := 1; i < n; i++ {
+		for j := 0; j < i; j++ {
+			if nums[j] < nums[i] && lis[i] < lis[j]+1 {
+				lis[i] = lis[j] + 1
+			}
+		}
+	}
+	max := lis[0]
+	for i := 1; i < n; i++ {
+		if max < lis[i] {
+			max = lis[i]
+		}
+	}
+	return max
+}
+