2021-11-09:设计井字棋。谁先同行或者同列都是自己的棋子,就算获得胜利 。力扣348。
2023-03-14 22:57:11 时间
2021-11-09:设计井字棋。谁先同行或者同列都是自己的棋子,就算获得胜利 。力扣348。
答案2021-11-09:
记录n行,n列,对角线的某个棋手的棋子数量。
代码用golang编写。代码如下:
package main
import "fmt"
func main() {
nttt := NewTicTacToe(3)
fmt.Println(nttt.move(0, 0, 1))
fmt.Println(nttt.move(1, 0, 1))
fmt.Println(nttt.move(2, 0, 1))
}
type TicTacToe struct {
rows [][]int
cols [][]int
leftUp []int
rightUp []int
matrix [][]bool
N int
}
func NewTicTacToe(n int) *TicTacToe {
res := &TicTacToe{}
// rows[a][1] : 1这个人,在a行上,下了几个
// rows[b][2] : 2这个人,在b行上,下了几个
//rows = new int[n][3]; //0 1 2
res.rows = make([][]int, n)
for i := 0; i < n; i++ {
res.rows[i] = make([]int, 3)
}
res.cols = make([][]int, n)
for i := 0; i < n; i++ {
res.cols[i] = make([]int, 3)
}
// leftUp[2] = 7 : 2这个人,在左对角线上,下了7个
res.leftUp = make([]int, 3)
// rightUp[1] = 9 : 1这个人,在右对角线上,下了9个
res.rightUp = make([]int, 3)
res.matrix = make([][]bool, n)
for i := 0; i < n; i++ {
res.matrix[i] = make([]bool, n)
}
res.N = n
return res
}
func (this *TicTacToe) move(row, col, player int) int {
if this.matrix[row][col] {
return 0
}
this.matrix[row][col] = true
this.rows[row][player]++
this.cols[col][player]++
if row == col {
this.leftUp[player]++
}
if row+col == this.N-1 {
this.rightUp[player]++
}
if this.rows[row][player] == this.N || this.cols[col][player] == this.N || this.leftUp[player] == this.N || this.rightUp[player] == this.N {
return player
}
return 0
}
执行结果如下:
[左神java代码](https://github.com/algorithmzuo/coding-for-great-offer/blob/main/src/class34/Problem_0348_DesignTicTacToe.java)
相关文章
- 火山引擎 DataTester 科普:A/B 实验常见名词解释
- 分贝通携手火山引擎数智平台 探寻数智化升级新通路
- 火山引擎DataTester:无需研发人力,即刻开启企业A/B实验
- 如何利用 A/B 实验提升产品用户留存? 看字节实战案例给你答案!
- 火山引擎DataTester:一个爆款游戏产品,是如何用A/B测试打磨出来的?
- 零售品牌如何挑选达人 KOL?火山引擎 VeDI 有妙招!
- 火山引擎 DataLeap 的 Data Catalog 系统公有云实践
- 火山引擎 VeDI 推出这款产品 助力企业实现以“人”为中心的数据洞察
- 火山引擎 DataTester 背后,抖音的名字原来是 AB 测试来的
- 低门槛上手快!火山引擎 VeDI 这样满足数据分析新需求
- 火山引擎 DataTester 首推 A/B 实验经验库,帮助企业高效优化实验设计能力
- 火山引擎 DataTester :让字节“跳动”起来的 A/B 实验平台
- 抖音"凶猛"的幕后英雄,火山引擎 DataTester 累计做过 150 万次 A/B 测试
- 创建一个科学决策必备的A/B实验,都需要哪些准备?——火山引擎 DataTester 使用指南
- 复杂 A/B 实验如何设计?火山引擎 DataTester 帮你落地!
- 新能源物流车行业如何服务升级?地上铁联合火山引擎VeDI“破题”
- 字节跳动开源数据集成引擎 BitSail 的演进历程与能力解析
- DataLeap的Catalog系统近实时消息同步能力优化
- 一文读懂字节跳动“埋点验证平台”
- A/B测试助力游戏业务增长