**
八、螺旋矩阵
**
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例 1:
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]
示例 2:
输入:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]
原题: 传送门
题解:
/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function(matrix) {
let result = [];
if(matrix.length == 0){
return result;
}
let rowH = 0;
let rowT = matrix.length - 1 ;
let colH = 0;
let colT = matrix[0].length - 1;
while(rowH<=rowT&&colH<=colT){
for(let c = colH ; c<=colT;c++){
result.push(matrix[rowH][c]);
}
for(let r= colH +1 ; r<=rowT ; r++){
result.push(matrix[r][colT]);
}
if(rowH<rowT&&colH<colT){
for(let c = colT -1 ; c > colH ; c-- ){
result.push(matrix[rowT][c]);
}
for(let r = rowT; r> rowH ; r--){
result.push(matrix[r][colH]);
}
}
rowH++;
rowT--;
colH++;
colT--;
}
return result;
};
嗯哼,就是模拟整个螺旋的过程
22 / 22 个通过测试用例
状态:通过
执行用时:108 ms
就是挺慢的…嗯哼,再来一题。
九、数组的相对排序
给你两个数组,arr1 和 arr2,
arr2 中的元素各不相同
arr2 中的每个元素都出现在 arr1 中
对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。
示例:
输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]
输出:[2,2,2,1,4,3,3,9,6,7,19]
提示:
arr1.length, arr2.length <= 1000
0 <= arr1[i], arr2[i] <= 1000
arr2 中的元素 arr2[i] 各不相同
arr2 中的每个元素 arr2[i] 都出现在 arr1 中
原题:传送门
题解:
/**
* @param {number[]} arr1
* @param {number[]} arr2
* @return {number[]}
*/
var relativeSortArray = function(arr1, arr2) {
let head = []
let tail = []
for(let i = 0 ; i< arr2.length ; i++){
for(let j = 0 ; j< arr1.length;j++){
if(arr1[j] == arr2[i]){
head.push(arr1[j]);
}
}
}
for(let i = 0 ; i< arr1.length;i++){
let dirt= false;
for(let j = 0 ;j<arr2.length;j++){
if(arr1[i]==arr2[j]){
dirt = true;
}
}
if(!dirt){
tail.push(arr1[i])
}
}
tail.sort(function(num1,num2){
return num1 - num2;
})
return head.concat(tail);
};
16 / 16 个通过测试用例
状态:通过
执行用时:84 ms
嗯,效率一般,就是省内存。回见。
版权声明:本文为qq_43268015原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。