算法入门与数组篇——01.03 数组排序

第一题 把数组排成最小的数

这道题学到了一个lamda表达式的写法:
比如按照下面这样写就是升序排序
在这里插入图片描述
而这道题的这个 lambda 表达式的目的是比较两个字符串 x 和 y,并返回一个布尔值,指示哪个字符串应该在前面。比较的标准是将两个字符串连接起来后的大小。
在这里插入图片描述

第二题 移动零

不需要每一次都将整个数组进行移动,只要在最后填充0即可
在这里插入图片描述

第三题 数组排序

使用复杂度为n方的选择排序会导致超时,因为快排在面对完全倒序的数组时候就会退化,所以使用普通的快排也会超时。
在这里插入图片描述

正确的做法有很多,比如使用3路快速排序
它会分别处理比pivot大、小和相等的数字,从而防止退化
在这里插入图片描述
还可以使用归并排序,但是可能会使用很多的额外存储空间,空间复杂度较高
在这里插入图片描述

第四题 相对名次

在这里学到了pair的用法,而且再次使用了lamda表达式
在这里插入图片描述

第五题 合并两个有序数组

这其实只是归并排序的合并过程,但是这样做空间复杂度为O(m+n),空间复杂度为O(1)的方法是利用nums1后面的空白空间,每次都将最大的放入nums1的最后面。
在这里插入图片描述

第六题 数组中的逆序对

基本思路就是在归并的基础上进行统计,但是不知道为啥超时了
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值