小编Roc*_*cky的帖子

使用函数式编程对二维数组中的列进行平均

作为函数式编程的练习,我决定浏览一下我的一个项目,并将包含 for 循环的函数替换为 的Array.prototype高阶函数,例如mapreduce

我的项目中的一个函数对二维数组中的列进行平均。它需要一个参数,samples它是一个大小为 2d 的数组[n][LOOKBACK]

[
    [0.6,  4.0, -0.5],
    [1.0, -0.5, -0.8],
    ...
]
Run Code Online (Sandbox Code Playgroud)

[
    [0.6,  4.0, -0.5],
    [1.0, -0.5, -0.8],
    ...
]
Run Code Online (Sandbox Code Playgroud)

输出应该是一个大小的数组LOOKBACK,其元素是每列的平均值:

[0.8, 1.75, -0.65]
Run Code Online (Sandbox Code Playgroud)

我花了一些时间试图找出解决方案,但我似乎无法想出一个。

使用 Javascript 的内置数组函数可以实现这一点吗?

*更新

从基里尔那里得到了一个优雅的解决方案。如果其他人有一个好的解决方案,我很乐意看到更多。

javascript arrays loops functional-programming node.js

4
推荐指数
1
解决办法
1492
查看次数

删除一个字符后,检查字符串是否为回文结构.我的工作解决方案太慢了

我似乎无法找到适当的练习方法.练习要求创建一个方法,如果字符串可以通过删除一个字符而成为回文,则返回true.我有一个解决方案,但无法测试大型(100,000个字符)字符串,因为它超过了1秒的时间限制.有人能指出我正确的方向吗?

我意识到我的方法是蛮力的,我相信有更好的解决方法.我假设我的问题在于迭代.

public class Main {

    public static boolean makePalindrome(String mjono) {

        StringBuilder sb = new StringBuilder(mjono);


        for (int i = 0; i < mjono.length(); i++) {
            sb.deleteCharAt(i);

            if(isPalindrome(sb.toString())){
                return true;
            } else {
                sb.insert(i, mjono.charAt(i));
            }
        }
        return false;
    }

    private static boolean isPalindrome(String string) {
        return string.equals(new StringBuilder(string).reverse().toString());
    }

    public static void main(String[] args) {
        System.out.println(makePalindrome("ABCBXA"));
        System.out.println(makePalindrome("ABCBAX"));
        System.out.println(makePalindrome("ABCXBA"));
        System.out.println(makePalindrome("ABCDE"));
        System.out.println(makePalindrome("BAAAAC"));
    }
}
Run Code Online (Sandbox Code Playgroud)

这些是它失败的测试:

@Test(timeout=1000)
public void suuri2() {
    int n = 100000;
    char[] t = new char[n];
    for …
Run Code Online (Sandbox Code Playgroud)

java string algorithm palindrome

1
推荐指数
1
解决办法
4202
查看次数