明天不用带饭啦
临睡前无事关注了下大前端群然后自作自受陷入了javascript弱类型的坑。ref👈
解题思路比较简单两个指针一左一右夹击,左边遇到非*
停下,右边遇到*
停下,交换(从伪代码到代码还有101次修改是我)。
var sort = function(array) {
for(let i = 0, j = array.length-1; i<j; ) {
while (i < j && array[i] === '*') {
i++;
}
while (i < j && array[j] !== '*') {
j--;
}
if (i < j) {
[array[i++], array[j--]] = [array[j], array[i]];
}
}
return array;
};
就是遇到了交换的坑。C和C++写函数是可以选择传值还是传址。一个交换函数
void swap(int *p1, int *p2)
{
int temp = 0;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
到javascript里就呵呵了。哪有传递引用?搜了一遍没找到太晚了先记下,投机取巧用了ES6
解构赋值[a, b] = [b, a];
所以最后连一个简单的交换函数都实现不了我要去睡觉了。。。
早上又提了好些代码,看起来有些以为写得短就是写得好呢。不懂算法瞎搞
当然我之前也会投机取巧缩短行数搞得别人看不懂代码。不过写业务代码能短些倒是好事,反正我们也不像王小波写的按代码行数算钱。
那么至此就推荐一个算法过程的东西吧👉AlgorithmVisualizer