• 上机编程认证01获取上下车订单


    /*
    * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
    * Description: 上机编程认证
    * Note: 缺省代码仅供参考,可自行决定使用、修改或删除
    * 只能import Go标准库
    */
    package main

    import (
    "bufio"
    "fmt"
    "io"
    "os"
    "sort"
    "strconv"
    "strings"
    )

    // 待实现函数,在此函数中填入答题代码
    func getTicketsNum(capacity int, ticketOrders [][]int) []int {
    result := make([]int, 0)
    totalOrders := len(ticketOrders)
    //设标志数组区间并初始化
    orderTagArr := make(map[int]int,20)
    //设置交叉标志
    orderTagRepeat := false
    var sortNums []int
    for i := 0;i < totalOrders;i++{
    ticketOrder := ticketOrders[i]
    if len(ticketOrder) > 3 {
    return []int{}
    }
    for j := ticketOrder[0]; j < ticketOrder[1]; j++{
    if _,ok := orderTagArr[j];!ok{
    orderTagArr[j] = 100 - ticketOrder[2]
    } else {
    if orderTagArr[j] - ticketOrder[2] >= 0 {
    orderTagArr[j] = ticketOrder[2]
    }
    orderTagRepeat = true
    }
    }
    if !orderTagRepeat {
    result = append(result,ticketOrder[2])
    } else {
    for _,value := range orderTagArr {
    sortNums = append(sortNums,value)
    }
    sort.Ints(sortNums)
    result = append(result,sortNums[0])
    }
    }

    return result
    }

    func main() {
    reader := bufio.NewReader(os.Stdin)
    capacity := readInputInt(reader)
    row := readInputInt(reader)
    ticketOrders := readInputIntArrayFromNlines(reader, row, 3)
    result := getTicketsNum(capacity, ticketOrders)
    for ind, val := range result {
    fmt.Print(val)
    if ind != len(result)-1 {
    fmt.Print(" ")
    }
    }
    }

    func readInputInt(reader *bufio.Reader) int {
    var num int
    if _, err := fmt.Fscanf(reader, "%d\n", &num); err != nil {
    fmt.Println(err.Error())
    return 0
    }
    return num
    }

    func readInputIntArrayFromNlines(reader *bufio.Reader, row int, col int) [][]int {
    if row <= 0 {
    return [][]int{}
    }
    result := make([][]int, 0, row)
    for i := 0; i < row; i++ {
    lineBuf, err := reader.ReadString('\n')
    if err != nil && err != io.EOF {
    fmt.Println(err.Error())
    return nil
    }
    lineBuf = strings.TrimRight(lineBuf, "\r\n")
    lineBuf = strings.TrimSpace(lineBuf)
    ints := map2IntArray(lineBuf, " ")
    if len(ints) != col {
    fmt.Println("col len is not " + strconv.Itoa(col))
    return nil
    }
    result = append(result, ints)
    }
    return result
    }

    func map2IntArray(str string, dem string) []int {
    tempArray := strings.Split(str, dem)
    result := make([]int, len(tempArray))
    for index, value := range tempArray {
    value = strings.TrimSpace(value)
    intVal, err := strconv.Atoi(value)
    if err == nil {
    result[index] = intVal
    }
    }
    return result
    }






    ````` test ``````


    package main

    import (
    "fmt"
    "strconv"
    "testing"
    )

    type testStruct1 = struct {
    inputStr inputStruct
    want string
    }

    type inputStruct struct {
    input1 int
    input2 [][]int
    }


    func TestSomeFunction(t *testing.T) {
    tests1 := []testStruct1{
    {inputStr: inputStruct{
    100,
    [][]int{
    {4,7,60},
    {1,3,50},
    {2,6,50},
    },
    } ,want: "605040"},
    {inputStr: inputStruct{
    55,
    [][]int{
    {1,2,55},
    {2,5,55},
    },
    } ,want: "5555"},
    }
    for _,tt := range tests1 {
    got := getTicketsNum(tt.inputStr.input1,tt.inputStr.input2)
    gotstr := ""
    for _, val := range got {
    gotstr += strconv.Itoa(val)
    }
    fmt.Println(got,tt.want)
    if gotstr != tt.want {
    t.Errorf("getTop3Num(%v) = %v, want %v", tt.inputStr, got, tt.want)
    }
    }
    }






  • 相关阅读:
    MySQL的双主配置
    MySQL主从复制配置部署
    Linux centOS安装MySQL
    hive搜索报错
    常用设计模式
    Cookie禁用 获取session
    排序算法
    MySQL优化
    javascript Map和Set
    ThinkPHP的基本操作
  • 原文地址:https://www.cnblogs.com/gongxianjin/p/16182135.html
Copyright © 2020-2023  润新知