目录
- golang 多维度排序
- 结果
- 题解最长连续序列
golang 多维度排序
func main() {
type PersonAge struct {
Name string
Age int
Hight int
}
ps := []PersonAge{
{"bo", 31, 333},
{"ao", 42, 34},
{"ao", 41, 23423},
{javascript"ao", 40, 23423},
{"ao", 45, 12},
{"co", 17, 3434},
{"do", 26, 2343},
}
sort.Slice(ps, func(i, j int) bool {
//!= 有大小时排序,相等时,下一个选项的优先级
if ps[i].javascriptName != ps[j].Name {
return ps[i].Name < ps[j].Name
}
if ps[i].Hight != ps[j].Hight {
return ps[i].Hight < ps[j].Hight
}
return ps[i].Age < ps[j].Age
})
log.Println(ps)
return
}
结果
[{ao 45 12} {ao 42 34} {ao 40 23423} {ao 41 23423} {bo 31 333} {co 17 3434} {do 26 2343}]
题解最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
最长连续www.devze.com序列原题
示例 1:
输入:nums = [100,4,200,1,3,2]
输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:
输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9
//排序
func longestConsecutive(nums []int) int {
if len(nums) == 0 {
return 0
}
sort.Ints(nums)
long := 1
lst := 1
tmp := nums[0]
for i, _ := range nums {
if nums[i] == tmp+1 {
long++
lst = max(lst, long)
tmp = nums[i]
} else if nums[i] == tmp {
continue
} else {
long = 1
tmp = nums[i]
}
}
return lst
}
func max(a,b int)int{
if a>b{
return a
}
return bphp
}
以上就是golang多维度排序及题解最长连续序列的详细内容,更多关于golanpythong 排序的资料请关注编程客栈(www.devze.com)其它相关文章!
加载中,请稍侯......
精彩评论