算法题

2022/2/10

# 1.移动*

  • 将数组的*号移动到最前面,不能改变数字顺序。
const arr = ['*', '*', '1', '2', '*', '4', '*', '*', '7', '3'];

moveStar(arr);
console.log(arr); // ['*', '*', '*', '*', '*', '1', '2', '4',  '7', '3']
复制成功
1
2
3
4

# 2.千位分隔符

const num = 12335667999;

console.log(split(num)); // 12,335,667,999
复制成功
1
2
3

# 3.比较版本号


/**
 * 比较两个版本号大小:
 *  1:参数1大
 *  0:一样大
 * -1:参数2大
 */

const ver1 = '2.11.21';
const ver2 = '1.2.03';

console.log(compare(ver1, ver2)); // 1
复制成功
1
2
3
4
5
6
7
8
9
10
11
12

# 4.手写getElementById

<body>
    <div>
        <div>
            <button id='btn1'>按钮</button>
        </div>
    </div>
    <div>
        <button id='btn2'>按钮</button>
    </div>

    <script>
        console.log(getElementById('btn1')); // <button id='btn1'>按钮</button>
    </script>
</body>
复制成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 5.合并对象

const obj1 = {a: 1, b: 2, c: {d: 3}, j: 7};
const obj2 = {a: 4, b: {e: 5}, c: {f: 6}};

console.log(merge(obj1, obj2));
// { a: 4, b: {e: 5}, c: {d: 3, f: 6}, j: 7 }
复制成功
1
2
3
4
5

# 6.数据流清理

  • node: 节点,string
const node = 'NODE_1';
复制成功
1
  • columns: 节点排列,二维数组
const columns = [
    ['NODE_2', 'NODE_3'],
    ['NODE_1', 'NODE_4', 'NODE_1'],
    ['NODE_5', 'NODE_3'],
];
复制成功
1
2
3
4
5
  • links: 错误的/冗余的连接数据。
const rawLinks = [
    { source: 'NODE_2', target: 'NODE_1', value: 3 },
    { source: 'NODE_2', target: 'NODE_1', value: 23 },
    { source: 'NODE_3', target: 'NODE_1', value: 11 },
    { source: 'NODE_1', target: 'NODE_5', value: 53 },
    { source: 'NODE_1', target: 'NODE_5', value: 6 },
    { source: 'NODE_3', target: 'NODE_3', value: 20 },
]
复制成功
1
2
3
4
5
6
7
8
  • 要求生成正确的连接数据
// 1.左侧列节点和右侧列节点必须有连接
// 2.如果原来没有这个连接,新建并且value设置成0
// 3.如果原来有多个这条路径的连接,加起来
// 4.计算出每个node的出入度
console.log(getRightLinks(rawLinks, columns));
复制成功
1
2
3
4
5

# 7.八进制加法

console.log(add('12343234', '42343234')); // 54706470
复制成功
1
上次更新: 6/13/2025
Powered By Valine
v1.4.16