小编Bho*_*oot的帖子

最大子阵列和模M

我们大多数人都熟悉最大和子阵列问题.我遇到了这个问题的一个变体,要求程序员输出模数为M的所有子阵列总和的最大值.

解决这种变体的天真方法是找到所有可能的子阵列总和(其数量为N ^ 2,其中N是数组的大小).当然,这还不够好.问题是 - 我们怎样才能做得更好?

示例:让我们考虑以下数组:

6 6 11 15 12 1

设M = 13.在这种情况下,子阵列6 6(或12或6 6 11 15或11 15 12)将产生最大总和(= 12).

algorithm binary-search modulo kadanes-algorithm

29
推荐指数
2
解决办法
1万
查看次数

在Java程序中单行进行多个类型转换

在今天乱搞Java语法的同时,我尝试编译以下java代码:

class Mess {
    public static void main(String[] args) {
        float i = (char)(int)(long)(byte) 100;
        System.out.println(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

代码实际上没有给出编译或运行时错误.更改的数据类型i为任何其他数据类型一样int或者doublechar工作过.不仅如此,在声明中引入操作也没有任何错误:

float i = (char)+(int)-(long)(byte) 100;
Run Code Online (Sandbox Code Playgroud)

当我在Netbeans中使用自动格式来格式化代码时,上面的声明格式如下:

float i = (char) +(int) -(long) (byte) 100;
Run Code Online (Sandbox Code Playgroud)

请帮助我理解这段代码是如何编译的?

java casting type-conversion

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

java编译中出现意外的错误顺序

在线解决挑战时,我发现了java的以下行为,我发现它有点奇怪.我从以下大纲编写程序开始:

import java.io.*;

class WeirdJava
{
    public static void main (String[] args) 
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();
        HashMap<Integer, Integer> map = new HashMap<Integer,Integer>();
        System.out.println("Weird Java");
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,在上面的程序中,有两个错误:

  • 我没有处理可能引发的异常BufferedReader.
  • 我没有导入util包含的标准库HashMap.

现在,当我尝试编译上面的程序时,java编译器给出了它无法找到符号的错误HashMap.请注意,涉及的声明HashMap是在之后BufferedReader.接下来,我将以下import语句添加到程序中:

import java.util.HashMap;
Run Code Online (Sandbox Code Playgroud)

当我再次编译程序时,这次编译器显示错误

未报告的异常IOException; 必须被抓住或宣布被抛出

我的问题:

  1. 为什么在先前的编译尝试中没有抛出此错误?
  2. 编译错误的顺序似乎并不自然.在此例程中,编译器设计原则是什么?

java compiler-errors compilation

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

优化所有子串的构造

我正在解决一个与trie相关的问题.有一组字符串的小号.我必须为S中的每个字符串的所有子字符串创建一个trie .我使用以下例程:

String strings[] = { ... }; // array containing all strings
for(int i = 0; i < strings.length; i++) {
    String w = strings[i];
    for (int j = 0; j < w.length(); j++) {
        for (int k = j + 1; k <= w.length(); k++) {
            trie.insert(w.substring(j, k));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用此处提供的trie实现.但是,我想知道是否可以进行某些优化以降低在所有子串上创建trie的复杂性?

我为什么需要这个?因为我正在努力解决这个问题.

algorithm optimization suffix-tree trie data-structures

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

查找树中所有最长的唯一路径

我们假设我们有一个由N个节点组成的树.任务是找到树中所有最长的唯一路径.例如,如果树如下所示:

样本树

然后树中有三条最长的独特路径:1 - 2 - 3 - 4 - 5,6 - 2 - 3 - 4 - 5和1 - 2 - 6.

我想以编程方式查找并存储给定树的所有此类路径.一种方法是计算树中每对节点之间的路径,然后拒绝任何其他路径中包含的路径.但是,我正在寻找一种有效的方法.我的问题如下:

  • 是否可以在小于O(N ^ 2)的范围内计算此信息?我还没有想到一个比O(N ^ 2)更快的解决方案.
  • 如果是的话,你能否引导我走向解决方案.

我想尝试一下的原因是因为我试图解决这个问题:KNODES

algorithm tree data-structures

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

在面部检测后捕获android中的相机框架

我在Android中使用面部检测,我希望实现以下功能:
1.在Android中使用面部检测监听器来检测相机框架上的面部.
2.如果在相机框架上检测到面部,则提取面部并将其保存到外部存储器.

浏览现有问题后,我发现没有直接的方法将检测到的面转换为位图并将其存储在磁盘上.所以现在我想要捕获并保存检测到面部的整个相机框架,但我无法这样做.

目前的代码结构如下:

FaceDetectionListener faceDetectionListener = new FaceDetectionListener() {

    @Override
    public void onFaceDetection(Face[] faces, Camera camera) {

        if (faces.length == 0) {
        } else {
            displayMessage("Face detected!");   
            // CODE TO SAVE CURRENT FRAME AS IMAGE
            finish();
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

我尝试通过在上面的方法中调用takePicture来实现这一点但我无法使用该方法保存帧.请建议一种方法,我可以保存相机框架.

android face-detection

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

寻找1到2之间的总和

给定n个正实数,任务是对以下问题提供"是"或"否"答案:"是否存在一对数字x和y,使得1 <= x + y <= 2.

显而易见的解决方案是对所有需要O(nlogn)的数字进行排序.现在,可以在O(n)时间内检查对.

然而,预计该问题将在恒定的空间和线性时间内得到解决.任何见解?

algorithm

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

java中ArrayList声明中的奇怪语法

最近,我偶然发现了以下java语法:

ArrayList<String> nodes = new ArrayList<String>(){{add("n1");add("n2");}};
Run Code Online (Sandbox Code Playgroud)

起初,我认为这是一个语法错误,但令我惊讶的是,代码没有给出编译或运行时错误.

我有以下问题:

  • Java中的此类声明是否有标准定义和文档?
  • 编译此代码时会发生什么?

请指出相关文献.

java syntax arraylist

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

如何通过gradle在命令行上执行时转义双引号?

我正在尝试使用gradle build系统通过git包括我的应用程序的版本。我想运行以下命令从git获取版本信息:

git describe --tags --match "v[0-9]*"
Run Code Online (Sandbox Code Playgroud)

这里阅读参考之后,我正在使用以下gradle语法:

commandLine 'git', 'describe', '--tags', '--long', '--match "v[0-9]*"'
Run Code Online (Sandbox Code Playgroud)

但这会导致执行错误。

错误:未知选项`match v [0-9] *'

我曾尝试用反斜杠转义双引号,但这也不起作用。有人可以指出我通过gradle执行上述命令的正确方法吗?

git gradle

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

Idea 15/Android Studio 1.4挂起用于大型项目的gradle同步

我们正在开发一个基于Gradle构建的Android项目(~50个模块).我们能够在IntelliJ Idea 14(141.2735)中成功同步我们的项目.CE(Gradle同步大约需要30-60秒).随着IntelliJ Idea 15 CE(143.381)/ Android Studio 1.4的发布,我们尝试将项目迁移到更新版本,但我们注意到:

  1. Gradle同步不适用于IntelliJ Idea 15或Android Studio 1.4中的项目.我们在Ubuntu 14.04和OsX El Captain上尝试了这个.
  2. 当我们尝试执行gradle sync时,IDE会冻结并无限期地无响应.退出IDE的唯一方法是终止相应的进程.
  3. 我们尝试将'vmoptions'中的堆空间增加到4GB,但没有效果.

我们已经创建了一个github存储库,其中包含我们的项目框架和gradle文件(无源代码),这些文件位于此处:https://github.com/prateeksultania/android-gradle.在IntelliJ Idea 14中,gradle sync可以与默认的vmoptions一起使用,并在不到一分钟的时间内完成.但是,同一项目的gradle sync将在新的IntelliJ Idea 15或Android Studio 1.4上永久使用.当我们将最大堆空间大小增加到4 GB时,对于这个空项目,gradle sync需要超过3分钟,甚至在此之后IDE继续占用超过3 GB的RAM.对于包含源文件和资源文件的实际项目,gradle sync永远不会在Idea 15或Android Studio 1.4上完成.

重现步骤:

  1. 在您的系统(Ubuntu或Mac)上安装IntelliJ Idea 14(141.2735)和Android Studio 1.4,IntelliJ Idea 15(143.381).
  2. 在您的系统上克隆此存储库:https://github.com/prateeksultania/android-gradle
  3. 打开IntelliJ Idea 14.选择Import> Project from Existing Sources> Use gradle作为构建系统.
  4. 打开gradle工具窗口并单击刷新按钮(如果gradle sync未自动启动).将执行Gradle同步,这将花费大约一分钟.
  5. 打开IntelliJ Idea 15并再次以相同的方式导入项目.
  6. 打开gradle工具窗口并单击刷新按钮(如果gradle sync未自动启动).Gradle sync无法完成,IDE变得无法响应并消耗大量CPU.
  7. Android Studio 1.4也是如此

有人可以帮助我们追踪这个吗?

android intellij-idea gradle android-studio android-gradle-plugin

5
推荐指数
0
解决办法
541
查看次数