mirror of
https://github.com/krahets/hello-algo.git
synced 2024-12-25 13:16:29 +08:00
feature: add auto-build-and-test workflow for go (#1019)
* fix(csharp): unified array statement * feature: add workflow for go/js/ts/zig * fix python UnicodeDecodeError on windows * Update space_complexity.go * Update space_complexity_test.go * Update space_complexity.go * remove nodejs, zip workflow --------- Co-authored-by: Yudong Jin <krahets@163.com>
This commit is contained in:
parent
d85a3bb74d
commit
b9ae4ffe9a
4 changed files with 51 additions and 35 deletions
36
.github/workflows/go.yml
vendored
Normal file
36
.github/workflows/go.yml
vendored
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
name: Go
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "main" ]
|
||||||
|
paths: ["codes/go/**/*.go"]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "main" ]
|
||||||
|
paths: ["codes/go/**/*.go"]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: codes/go/
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||||
|
go-version: ["1.19.x"]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Go ${{ matrix.go-version }}
|
||||||
|
uses: actions/setup-go@v3
|
||||||
|
with:
|
||||||
|
go-version: ${{ matrix.go-version }}
|
||||||
|
- name: Check out code into the Go module directory
|
||||||
|
run: go get -v -t -d ./...
|
||||||
|
- name: Build
|
||||||
|
run: go build -v ./...
|
||||||
|
- name: Test with Go
|
||||||
|
run: go test -v ./...
|
|
@ -7,6 +7,8 @@ package chapter_computational_complexity
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
. "github.com/krahets/hello-algo/pkg"
|
||||||
)
|
)
|
||||||
|
|
||||||
/* 结构体 */
|
/* 结构体 */
|
||||||
|
@ -15,33 +17,11 @@ type node struct {
|
||||||
next *node
|
next *node
|
||||||
}
|
}
|
||||||
|
|
||||||
/* treeNode 二叉树 */
|
|
||||||
type treeNode struct {
|
|
||||||
val int
|
|
||||||
left *treeNode
|
|
||||||
right *treeNode
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 创建 node 结构体 */
|
/* 创建 node 结构体 */
|
||||||
func newNode(val int) *node {
|
func newNode(val int) *node {
|
||||||
return &node{val: val}
|
return &node{val: val}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 创建 treeNode 结构体 */
|
|
||||||
func newTreeNode(val int) *treeNode {
|
|
||||||
return &treeNode{val: val}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 输出二叉树 */
|
|
||||||
func printTree(root *treeNode) {
|
|
||||||
if root == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fmt.Println(root.val)
|
|
||||||
printTree(root.left)
|
|
||||||
printTree(root.right)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 函数 */
|
/* 函数 */
|
||||||
func function() int {
|
func function() int {
|
||||||
// 执行某些操作...
|
// 执行某些操作...
|
||||||
|
@ -54,7 +34,7 @@ func spaceConstant(n int) {
|
||||||
const a = 0
|
const a = 0
|
||||||
b := 0
|
b := 0
|
||||||
nums := make([]int, 10000)
|
nums := make([]int, 10000)
|
||||||
ListNode := newNode(0)
|
node := newNode(0)
|
||||||
// 循环中的变量占用 O(1) 空间
|
// 循环中的变量占用 O(1) 空间
|
||||||
var c int
|
var c int
|
||||||
for i := 0; i < n; i++ {
|
for i := 0; i < n; i++ {
|
||||||
|
@ -64,7 +44,10 @@ func spaceConstant(n int) {
|
||||||
for i := 0; i < n; i++ {
|
for i := 0; i < n; i++ {
|
||||||
function()
|
function()
|
||||||
}
|
}
|
||||||
fmt.Println(a, b, nums, c, ListNode)
|
b += 0
|
||||||
|
c += 0
|
||||||
|
nums[0] = 0
|
||||||
|
node.val = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 线性阶 */
|
/* 线性阶 */
|
||||||
|
@ -112,12 +95,12 @@ func spaceQuadraticRecur(n int) int {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 指数阶(建立满二叉树) */
|
/* 指数阶(建立满二叉树) */
|
||||||
func buildTree(n int) *treeNode {
|
func buildTree(n int) *TreeNode {
|
||||||
if n == 0 {
|
if n == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
root := newTreeNode(0)
|
root := NewTreeNode(0)
|
||||||
root.left = buildTree(n - 1)
|
root.Left = buildTree(n - 1)
|
||||||
root.right = buildTree(n - 1)
|
root.Right = buildTree(n - 1)
|
||||||
return root
|
return root
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,25 +6,21 @@ package chapter_computational_complexity
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
. "github.com/krahets/hello-algo/pkg"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSpaceComplexity(t *testing.T) {
|
func TestSpaceComplexity(t *testing.T) {
|
||||||
/* ======= Test Case ======= */
|
|
||||||
n := 5
|
n := 5
|
||||||
|
|
||||||
/* ====== Driver Code ====== */
|
|
||||||
// 常数阶
|
// 常数阶
|
||||||
spaceConstant(n)
|
spaceConstant(n)
|
||||||
|
|
||||||
// 线性阶
|
// 线性阶
|
||||||
spaceLinear(n)
|
spaceLinear(n)
|
||||||
spaceLinearRecur(n)
|
spaceLinearRecur(n)
|
||||||
|
|
||||||
// 平方阶
|
// 平方阶
|
||||||
spaceQuadratic(n)
|
spaceQuadratic(n)
|
||||||
spaceQuadraticRecur(n)
|
spaceQuadraticRecur(n)
|
||||||
|
|
||||||
// 指数阶
|
// 指数阶
|
||||||
root := buildTree(n)
|
root := buildTree(n)
|
||||||
printTree(root)
|
PrintTree(root)
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ if __name__ == "__main__":
|
||||||
stderr=subprocess.PIPE,
|
stderr=subprocess.PIPE,
|
||||||
text=True,
|
text=True,
|
||||||
env=env,
|
env=env,
|
||||||
|
encoding='utf-8'
|
||||||
)
|
)
|
||||||
# Wait for the process to complete, and get the output and error messages
|
# Wait for the process to complete, and get the output and error messages
|
||||||
stdout, stderr = process.communicate()
|
stdout, stderr = process.communicate()
|
||||||
|
|
Loading…
Reference in a new issue