第一题 把数组排成最小的数
这道题学到了一个lamda表达式的写法:
比如按照下面这样写就是升序排序
而这道题的这个 lambda 表达式的目的是比较两个字符串 x 和 y,并返回一个布尔值,指示哪个字符串应该在前面。比较的标准是将两个字符串连接起来后的大小。
第二题 移动零
不需要每一次都将整个数组进行移动,只要在最后填充0即可
第三题 数组排序
使用复杂度为n方的选择排序会导致超时,因为快排在面对完全倒序的数组时候就会退化,所以使用普通的快排也会超时。
正确的做法有很多,比如使用3路快速排序
它会分别处理比pivot大、小和相等的数字,从而防止退化
还可以使用归并排序,但是可能会使用很多的额外存储空间,空间复杂度较高
第四题 相对名次
在这里学到了pair的用法,而且再次使用了lamda表达式
第五题 合并两个有序数组
这其实只是归并排序的合并过程,但是这样做空间复杂度为O(m+n),空间复杂度为O(1)的方法是利用nums1后面的空白空间,每次都将最大的放入nums1的最后面。
第六题 数组中的逆序对
基本思路就是在归并的基础上进行统计,但是不知道为啥超时了