题目:
给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位。
解题思路:
1.使用哈希表存储数组元素取模后的结果,对数组元素的绝对值进行%10,直到取模结果小于10为止。
2.通过自定义排序,根据数组元素的取模结果大小来进行排序。
代码:
function sortArray(arr) {
const map = new Map()
for(let i = 0 ; i < arr.length ; i++) {
let num = Math.abs(arr[i])
while(Math.abs(arr[i]) > 10 && num>10) {
num %= 10
}
map.set(arr[i],num)
}
let newArr = arr.sort((a,b)=>{
return map.get(a) - map.get(b)
})
return newArr
}
console.log(sortArray([1,2,5,-21,22,11,55,-101,42,8,7,32]))
//打印结果如下:
[
1, -21, 11, -101,
2, 22, 42, 32,
5, 55, 7, 8
]