给你一个包含若干 互不相同 整数的数组 nums ,你需要执行以下操作 直到数组为空 :
请你返回需要多少个操作使 nums 为空。
麻了,两份代码都是差九个用例,提示超时。
func countOperationsToEmptyArray(nums []int) int64 {
var result int64 = 0
for len(nums) != 0 {
var i int64 = 0
i = findMin(nums)
result = result + i +1
nums = append(nums[i+1:],nums[:i]...)
}
return result
}
func findMin(nums []int) int64 {
min := 1000000000
var index int64 = -1
for k,v := range(nums){
if v < min{
min = v
index = int64(k)
}
}
return index
}
func countOperationsToEmptyArray(nums []int) int64 {
var result int64 = 0
var leng int64 = 0
for _,v := range nums {
v = v
leng++
}
temp := make([]int,len(nums))
copy(temp,nums)
sort.Ints(temp)
sign := 0
for len(nums) != 0 {
var i int64 = 0
for i<leng {
if nums[i] == temp[sign]{
sign++
break
}
i++
}
result = result + i +1
nums = append(nums[i+1:],nums[:i]...)
}
return result
}
感觉有必要深入研究一下如何降低时间复杂度或者如何面对这种卡时间的题,周赛中经常遇到差几个用例然后一直超时的。 明天再看看…
更新:看了讨论区的讨论,原来是要用线段树和树状数组做,数据结构选错了,但是现阶段我还用不上,先放放,之后再学这些。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有