请用go实现以下算法: 0x2-0xD的连续数,0x41和0x42作为万能数(万能数能根据情况变成任意数),0x2可以和0xE进行连续,0xD不允许和0xE进行连续。请用一个函数实现判断输入3个数或者5个数的数组是否连续?
package main
import ( "fmt" "sort" )
func isContinuous(nums []int) bool { if len(nums) != 3 && len(nums) != 5 { return false }
sort.Ints(nums)
for i := 0; i < len(nums)-1; i++ {
if nums[i] == 0x41 || nums[i] == 0x42 {
continue
}
if nums[i] == 0x2 {
if nums[i+1] != 0xd && nums[i+1] != 0xe {
return false
}
} else if nums[i] == 0xd {
if nums[i+1] != 0x2 && nums[i+1] != 0x0e {
return false
}
} else if nums[i]+1 != nums[i+1] {
return false
}
}
return true
}
func main() { nums1 := []int{0x2, 0x3, 0x4} nums2 := []int{0x2, 0xd, 0xe, 0xf, 0x10} nums3 := []int{0x2, 0xd, 0xe, 0x10} nums4 := []int{0x2, 0x41, 0x42}
fmt.Println(isContinuous(nums1)) // true
fmt.Println(isContinuous(nums2)) // true
fmt.Println(isContinuous(nums3)) // false
fmt.Println(isContinuous(nums4)) // true
}
原文地址: https://www.cveoy.top/t/topic/vGb 著作权归作者所有。请勿转载和采集!