牛客 算法题 golang语言实现

题目

HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序

描述
输入整型数组和排序标识,对其元素按照升序或降序进行排序

数据范围: 
1
≤
�
≤
1000
 
1≤n≤1000  ,元素大小满足 
0
≤
�
�
�
≤
100000
 
0≤val≤100000 
输入描述:
第一行输入数组元素个数
第二行输入待排序的数组,每个数用空格隔开
第三行输入一个整数0或1。0代表升序排序,1代表降序排序

输出描述:
输出排好序的数字

示例1
输入:
8
1 2 4 9 3 55 64 25
0
复制
输出:
1 2 3 4 9 25 55 64
复制
示例2
输入:
5
1 2 3 4 5
1
复制
输出:
5 4 3 2 1

golang

package main

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

func main() {
    input:=make([]int,0)
    length:=0
    orderType:=0
    scanner:=bufio.NewScanner(os.Stdin)
    for scanner.Scan(){
        line:= scanner.Text()
        arr:=strings.Fields(line)
        for _,v:=range arr{
            num,_:=strconv.Atoi(v)
            input = append(input, num)
        } 
    }

    length =input[0]
    orderType = input[len(input)-1]
    
    result:=input[1:len(input)-1]
    sort.Ints(result)
    if orderType==1{
         sort.Sort(sort.Reverse(sort.IntSlice(result)))
    }

     for i,v:=range result{
        if i==(length-1){
            fmt.Printf("%d", v)
        }else{
            fmt.Printf("%d ", v)
        }
        
    }
    
}

运行结果

result

### 关于华为算法题目的解析 #### 字符串字符匹配 字符串字符匹配问题是常见的基础算法之一,通常涉及模式匹配、KMP算法等内容。在华为网的相关题目中,可以参考如下实现方式[^1]: ```python def str_match(s, pattern): m, n = len(s), len(pattern) i, j = 0, 0 while i < m and j < n: if s[i] == pattern[j]: j += 1 i += 1 return j == n ``` --- #### 将真分数分解为埃及分数 将真分数分解为埃及分数是一个经典的数学问题,在实际编程中可以通过贪心算法来解决。 ```python from fractions import Fraction def egyptian_fraction(fraction): result = [] f = Fraction(fraction).limit_denominator() numerator, denominator = f.numerator, f.denominator while numerator != 0: x = (denominator + numerator - 1) // numerator result.append(Fraction(1, x)) numerator, denominator = numerator * x - denominator, denominator * x return result ``` --- #### 统计大写字母个数 统计字符串中的大写字母数量属于简单的字符串处理问题,以下是其实现方法[^4]: ```python def count_uppercase(s): count = sum(1 for c in s if 'A' <= c <= 'Z') return count ``` --- #### 合法IP判断 对于合法IP地址的判断,需要考虑IPv4格式的有效性验证逻辑[^5]。 ```python def is_valid_ip(ip): parts = ip.split('.') if len(parts) != 4: return False for part in parts: if not part.isdigit() or not 0 <= int(part) <= 255: return False if len(part) > 1 and part.startswith('0'): return False return True ``` --- #### 密码强度等级 密码强度检测可以根据长度、复杂性和特殊字符的存在情况进行综合评分[^3]。 ```python import re def password_strength(password): score = 0 if len(password) >= 8: score += 1 if re.search(r'[a-z]', password): score += 1 if re.search(r'[A-Z]', password): score += 1 if re.search(r'\d', password): score += 1 if re.search(r'[!@#$%^&*(),.?":{}|<>]', password): score += 1 return score ``` --- #### 注意事项 在参加机考时需要注意代码的原创性,避免因代码相似度过高而被系统判定为作弊行为[^2]。因此,即使熟悉某些经典算法,也应尝试通过调整变量名、优化逻辑等方式降低相似度。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值