【每日一题】力扣剑指 Offer II 075. 数组相对排序
2023-03-14 22:47:23 时间
解题思路
- 先根据arr2对arr1进行排序
- arr1的元素是要比arr2多或是相等的,根据arr2排完序后arr1后半段会有一段无序的小尾巴
- 再对小尾巴进行排序
代码
func relativeSortArray(arr1 []int, arr2 []int) []int { if arr1 == nil || len(arr1) == 1 { return arr1 } l1 := len(arr1) l2 := len(arr2) n := 0 // 已经排好序的不在参与排序 for i := 0; i < l2 ; i++ { m := i + n for j := m; j < l1; j++ { if arr2[i] == arr1[j] { swap(arr1,m,j) //break m++ n++ } } n-- } //fmt.Printf("%v",arr1) //fmt.Println(n) // 选择排序 sort(arr1,l1,l2 + n) return arr1 } // x不能等于Y //func swap(arr1 []int,x, y int) { // arr1[x] = arr1[x] ^ arr1[y] // arr1[y] = arr1[x] ^ arr1[y] // arr1[x] = arr1[x] ^ arr1[y] //} func swap(arr1 []int,x, y int) { temp := arr1[x] arr1[x] = arr1[y] arr1[y] = temp } // 让数组在[l2,l1]之间排序 func sort(arr []int,l1,l2 int) { for i := l2; i < l1 - 1; i++ { min := i for j := i + 1 ; j < l1; j++ { if arr[min] > arr[j] { min = j } } swap(arr,i,min) } }
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的