Skip to content

Commit

Permalink
feature: add auto-build-and-test workflow for go (krahets#1019)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>
  • Loading branch information
hpstory and krahets authored Jan 12, 2024
1 parent d85a3bb commit b9ae4ff
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 35 deletions.
36 changes: 36 additions & 0 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
@@ -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 ./...
39 changes: 11 additions & 28 deletions codes/go/chapter_computational_complexity/space_complexity.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ package chapter_computational_complexity
import (
"fmt"
"strconv"

. "github.com/krahets/hello-algo/pkg"
)

/* 结构体 */
Expand All @@ -15,33 +17,11 @@ type node struct {
next *node
}

/* treeNode 二叉树 */
type treeNode struct {
val int
left *treeNode
right *treeNode
}

/* 创建 node 结构体 */
func newNode(val int) *node {
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 {
// 执行某些操作...
Expand All @@ -54,7 +34,7 @@ func spaceConstant(n int) {
const a = 0
b := 0
nums := make([]int, 10000)
ListNode := newNode(0)
node := newNode(0)
// 循环中的变量占用 O(1) 空间
var c int
for i := 0; i < n; i++ {
Expand All @@ -64,7 +44,10 @@ func spaceConstant(n int) {
for i := 0; i < n; i++ {
function()
}
fmt.Println(a, b, nums, c, ListNode)
b += 0
c += 0
nums[0] = 0
node.val = 0
}

/* 线性阶 */
Expand Down Expand Up @@ -112,12 +95,12 @@ func spaceQuadraticRecur(n int) int {
}

/* 指数阶(建立满二叉树) */
func buildTree(n int) *treeNode {
func buildTree(n int) *TreeNode {
if n == 0 {
return nil
}
root := newTreeNode(0)
root.left = buildTree(n - 1)
root.right = buildTree(n - 1)
root := NewTreeNode(0)
root.Left = buildTree(n - 1)
root.Right = buildTree(n - 1)
return root
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,21 @@ package chapter_computational_complexity

import (
"testing"

. "github.com/krahets/hello-algo/pkg"
)

func TestSpaceComplexity(t *testing.T) {
/* ======= Test Case ======= */
n := 5

/* ====== Driver Code ====== */
// 常数阶
spaceConstant(n)

// 线性阶
spaceLinear(n)
spaceLinearRecur(n)

// 平方阶
spaceQuadratic(n)
spaceQuadraticRecur(n)

// 指数阶
root := buildTree(n)
printTree(root)
PrintTree(root)
}
1 change: 1 addition & 0 deletions codes/python/test_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
stderr=subprocess.PIPE,
text=True,
env=env,
encoding='utf-8'
)
# Wait for the process to complete, and get the output and error messages
stdout, stderr = process.communicate()
Expand Down

0 comments on commit b9ae4ff

Please sign in to comment.