首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用javascript质询问题在森林中找到视觉上令人愉悦的树木模式并进行格式化?

如何使用javascript质询问题在森林中找到视觉上令人愉悦的树木模式并进行格式化?
EN

Stack Overflow用户
提问于 2021-08-20 08:54:13
回答 1查看 589关注 0票数 0

下面是一些美观的树的例子:

这些是不美观的树木的例子。

给定一个由N个整数组成的数组A,其中AK表示第K个3的高度,返回切割一棵树的方式的数量,以便其余的树在美学上令人愉悦。如果不可能达到预期的结果,您的函数应该返回-1。如果这些树在没有任何移除的情况下已经很美观,那么你的函数应该返回0。

预期结果A1 = 1,2,3,4,2,5;此模式永远不能形成视觉美学,因此函数应返回-1。

预期结果A2 = 1,3,1,2;此模式在视觉上已经很美观,因此它应该返回0。

我试着解决它,但它不起作用,我只得到了一个结果。有人能帮我用javascript编写代码吗?

结果示例:

代码语言:javascript
运行
复制
Example test:   [3, 4, 5, 3, 7]
WRONG ANSWER (got 1 expected 3)

Example test:   [1, 2, 3, 4]
WRONG ANSWER (got 1 expected -1)

Example test:   [1, 3, 1, 2]
CORRECT ANSWER

我的代码:

代码语言:javascript
运行
复制
function solution(A) {
if (A.length < 3) {
            return A[0] != A[1] ? 0 : 1;
        }
        var count = 0;
        for (var i = 0; i < A.length - 2 ; i += 2) {
            var a = A[i];
            var b = A[i+1];
            var c = A[i + 2];
            if (!(a - b > 0 && b - c < 0) && !(a - b < 0 && b - c > 0)) {
                count++;
            }
        }
        return count;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-20 11:14:38

您可以将问题分解为单个任务,并检查数组是否令人愉快,然后返回零或计算令人愉快的子数组。

key函数使用函数切换方向大/小,并检查下一对是否更大,前一对是否更小,反之亦然。

首先,它需要获得与实际方向相反的方向,因为它首先更改方向,然后再进行检查。

代码语言:javascript
运行
复制
function pleasant(array) {
    function isPleasant(array) {
        const
            toggle = { gt: 'lt', lt: 'gt' },
            fns = { gt: (a, b) => a > b, lt: (a, b) => a < b };
            
        let dir = fns.gt(array[0], array[1]) ? 'lt' : 'gt';

        return array
            .slice(1)
            .every((v, i) => fns[dir = toggle[dir]](array[i], v));
    }

    function count() {
        return array.reduce((c, _, i, a) => c + isPleasant([
            ...a.slice(0, i),
            ...a.slice(i + 1)
        ]), 0);
    }

    return isPleasant(array)
        ? 0
        : count() || -1;
}

console.log(pleasant([3, 4, 5, 3, 7])); //  3
console.log(pleasant([1, 2, 3, 4]));    // -1
console.log(pleasant([1, 3, 1, 2]));    //  0
console.log(pleasant([1, 1, 1, 1]));    // -1

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68859514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档