吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1249|回复: 4
收起左侧

[求助] 一道算法题,要求用Golang实现

[复制链接]
980041382 发表于 2022-6-15 11:53
40吾爱币
给定一个数n,如23121;给定一组数字A如{2,4,9},求由A中元素组成的、小于n的最大数。如小于23121的最大数为22999。


可以的话顺便写的测试用例谢谢大佬们

最佳答案

查看完整内容

没有详细测, 不确定有没有楼考虑的细节, 根据以往经验 应该是有的, 也肯定不是最优的算法 这个分数 就不写测试用例了 [mw_shl_code=ruby,true]package main import ( "fmt" "math" "sort" "strconv" ) func GetMax(arr []int, max int) int { ans := 0 bLower := false sort.Ints(arr) maxIntInArr := arr[len(arr)-1] GetSimilar := func(temp int) int { similar := arr[0] for _, i := rang ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pzx521521 发表于 2022-6-15 11:53
本帖最后由 pzx521521 于 2022-6-15 14:03 编辑

没有详细测, 不确定有没有楼考虑的细节, 根据以往经验 应该是有的, 也肯定不是最优的算法   这个分数  就不写测试用例了
[Ruby] 纯文本查看 复制代码
package main

import (
	"fmt"
	"math"
	"sort"
	"strconv"
)

func GetMax(arr []int, max int) int {
	ans := 0
	bLower := false
	sort.Ints(arr)
	maxIntInArr := arr[len(arr)-1]
	GetSimilar := func(temp int) int {
		similar := arr[0]
		for _, i := range arr {
			if i > temp {
				return similar
			}
			similar = i
		}
		return similar
	}

	smax := strconv.Itoa(max)
	iLen := len(smax)
	for i := 0; i < iLen; i++ {
		temp := int(smax[i] - 48) //48是0
		similar := GetSimilar((temp))

		if !bLower {
			if similar <= temp {
				ans = ans + similar*int(math.Pow(10, float64(iLen-i-1)))
			}
		} else {
			ans = ans + maxIntInArr*int(math.Pow(10, float64(iLen-i-1)))
		}
		if !bLower && similar != temp {
			bLower = true
		}
	}
	return ans
}
func main() {
	fmt.Printf("%v\n", GetMax([]int{6, 4, 9}, 23121))
}
侃遍天下无二人 发表于 2022-6-15 12:58
从最高位开始必须小于等于给定的数值,一旦出现小于,剩余的位都可以从集合中选最大的数
yanjingtu 发表于 2022-6-15 13:01
本帖最后由 yanjingtu 于 2022-6-15 13:03 编辑

厉害了,几分钟就整出来了吗
感谢楼上解释,有点懂了
平淡最真 发表于 2022-6-15 13:22
pzx521521 发表于 2022-6-15 12:18
没有详细测, 不确定有没有楼考虑的细节, 根据以往经验 应该是有的, 也肯定不是最优的算法   这个分数  就不 ...

应该是没考虑到{6,4,9}   23121  只能少一位选9999了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 10:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表