dengxinyi 6 年 前
コミット
a51fd35784

+ 30 - 0
medium/419.battleships-in-a-board.go

@@ -0,0 +1,30 @@
+func countBattleships(board [][]byte) (cnt int) {
+	m := len(board)
+	if m == 0 {
+		return
+	}
+	n := len(board[0])
+	if n == 0 {
+		return
+	}
+	for i := 0; i < m; i++ {
+		for j := 0; j < n; j++ {
+			if board[i][j] == 'X' {
+				fill(board, j, i, m, n)
+				cnt++
+				j++
+			}
+		}
+	}
+	return
+}
+
+func fill(board [][]byte, x, y, m, n int) {
+	board[y][x] = '.'
+	for i := x + 1; i < n && board[y][i] == 'X'; i++ {
+		board[y][i] = '.'
+	}
+	for i := y + 1; i < m && board[i][x] == 'X'; i++ {
+		board[i][x] = '.'
+	}
+}

+ 18 - 0
medium/421.maximum-xor-of-two-numbers-in-an-array.go

@@ -0,0 +1,18 @@
+func findMaximumXOR(nums []int) int {
+	max, mask := 0, 0
+	for i := 31; 0 <= i; i-- { // Check max & 1<<i is 1 or 0
+		m := make(map[int]bool)
+		mask |= 1 << uint(i)
+		for _, n := range nums {
+			m[n&mask] = true // Get the top n digit of nums as prefix set
+		}
+		tmp := max | 1<<uint(i) // Assume that c == max | 1<<i, for each a, find if b is in prefix set
+		for k := range m {
+			if _, ok := m[tmp^k]; ok {
+				max = tmp
+				break
+			}
+		}
+	}
+	return max
+}

+ 33 - 0
medium/423.reconstruct-original-digits-from-english.go

@@ -0,0 +1,33 @@
+func originalDigits(s string) string {
+	freq, cnt := make([]int, 256), make([]int, 10)
+	for _, r := range s {
+		freq[r]++
+	}
+	cnt[0] = wordCnt(freq, 'z', "o")
+	cnt[2] = wordCnt(freq, 'w', "o")
+	cnt[4] = wordCnt(freq, 'u', "fo")
+	cnt[6] = wordCnt(freq, 'x', "s")
+	cnt[8] = wordCnt(freq, 'g', "h")
+	//
+	cnt[1] = wordCnt(freq, 'o', "n")
+	cnt[3] = freq['h']
+	cnt[5] = freq['f']
+	cnt[7] = wordCnt(freq, 's', "n")
+	//
+	cnt[9] = freq['n'] / 2
+	var sb strings.Builder
+	for i := 0; i < 10; i++ {
+		for j := 0; j < cnt[i]; j++ {
+			sb.WriteByte(byte(i + '0'))
+		}
+	}
+	return sb.String()
+}
+
+func wordCnt(freq []int, key byte, word string) int {
+	cnt := freq[key]
+	for _, r := range word {
+		freq[r] -= cnt
+	}
+	return cnt
+}

+ 3 - 0
medium/424.longest-repeating-character-replacement.go

@@ -0,0 +1,3 @@
+func characterReplacement(s string, k int) int {
+	
+}