美文网首页
构建数组

构建数组

作者: 舒小贱 | 来源:发表于2020-08-12 11:01 被阅读0次

    网上的tx面试题:输入n,输出方阵:
    n=5时如下:

    0   0   0   0   5   
    0   0   0   6   4   
    0   0   7   14  3
    0   8   15  13  2
    9   10  11  12  1
    

    n=3时如下:

    0   0   3
    0   4   2
    5   6   1
    

    代码:

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        /*
           输入n,输出方阵,
           n=6时如下
           0   0   0   0   0   6
           0   0   0   0   7   5
           0   0   0   8   18  4
           0   0   9   19  17  3
           0   10  20  21  16  2
           11  12  13  14  15  1
           n=3时如下
           0   0   3
           0   4   2
           5   6   1
        */
        n := 6
        res := getres(n)
        for i := 0; i < len(res); i++ {
            fmt.Println(res[i])
        }
    }
    
    func getres(n int) [][]int {
        matrix := make([][]int, n)
        for i := 0; i < n; i++ {
            matrix[i] = make([]int, n)
        }
        direction := 0
        idx := 1
        left := 0
        right := n - 1
    
        low := 0
        high := n - 1
    
        final := n * (n + 1) / 2
        fmt.Println(final)
        for idx <= final {
            switch direction % 3 {
            case 0: //下->上
                for i := high; i >= low; i-- {
                    matrix[i][right] = idx
                    idx += 1
                }
                right -= 1
                low += 1
            case 1: //右上->左下
                for i, j := low, right; i <= high && j >= left; i, j = i+1, j-1 {
                    matrix[i][j] = idx
                    idx += 1
                }
                low += 1
                left += 1
            case 2: //左->右
                for j := left; j <= right; j++ {
                    matrix[high][j] = idx
                    idx += 1
                }
                high -= 1
                left += 1
            }
            direction += 1
        }
        return matrix
    }
    
    

    output:

    [0  0   0  0  0  6]
    [0  0   0  0  7  5]
    [0  0   0  8  18 4]
    [0  0   9  19 17 3]
    [0  10  20 21 16 2]
    [11 12  13 14 15 1]
    

    相关文章

      网友评论

          本文标题:构建数组

          本文链接:https://www.haomeiwen.com/subject/heepdktx.html