小编bhu*_*esh的帖子

提高代码性能

今天我听说这个名为codility的网站,用户可以通过各种编程测试来检查代码的性能.

当我开始时,他们向我展示了这个样本测试,

任务描述一只小青蛙想要到达路的另一边.青蛙目前位于X位置并且想要到达大于或等于Y的位置.小青蛙总是跳跃固定的距离,D.计算小青蛙必须达到目标的最小跳跃次数.

写一个函数: class Solution { public int solution(int X, int Y, int D); } 给定三个整数X,YD返回从位置X到等于或大于的位置的最小跳跃次数Y.

例如,给定:
X = 10
Y = 85
D = 30函数应该返回3,因为青蛙将按如下方式定位:

在第一次跳跃之后,位置10 + 30 = 40

第二次跳跃后,位置10 + 30 + 30 = 70

在第三次跳跃后,位置10 + 30 + 30 + 30 = 100

假设:X,Y和D是该范围内的整数

[1..1,000,000,000]; X≤Y.复杂性:预计最坏情况时间

复杂度是O(1); 预期的最坏情况空间复杂度为O(1).

问题非常简单,我花了2分钟时间编写解决方案,这是以下内容,

class Solution {
    public int solution(int X, int Y, int D) {

        int …
Run Code Online (Sandbox Code Playgroud)

java

8
推荐指数
2
解决办法
3957
查看次数

为什么我不能解析"+1"到int?

我试图将+1值解析为int值.在我的代码+1是一个String,我试图将其转换为Integer使用Integer.parseInt,

String num = "+1";
int convertedNum = Integer.parseInt(num);
Run Code Online (Sandbox Code Playgroud)

但我收到错误,为什么Java不+1作为整数值处理?

java

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

为什么我们使用'new'关键字和原始数据类型如`boolean`来创建数组?

在java中,两种数据类型是引用类型和基本类型.引用类型是对象的引用,而基本类型直接包含值.

现在,newjava中的关键字用于创建Object的实例,例如,

String s3 = new String("foo")
Run Code Online (Sandbox Code Playgroud)

要么

String[] myStringArray = new String[3];
Run Code Online (Sandbox Code Playgroud)

这是可以的,因为它String是一个类而不是原始数据类型.

但由于boolean或是int原始数据类型,为什么我们new在创建数组时使用关键字,

int[] myIntArray = new int[3];
int[] myIntArray = new int[]{1,2,3};
boolean[] array = new boolean[size];
Run Code Online (Sandbox Code Playgroud)

不宜new关键字只参照数据类型使用?

java

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

带有代理字符的字符串的长度 - java

我无法计算我的长度中String有一些代理字符吗?

我的字符串是,

String val1 = "\u5B66\uD8F0\uDE30";
Run Code Online (Sandbox Code Playgroud)

问题是,\uD8F0\uDE30一个字符不是两个,所以String应该是长度2.

但是当我计算我的长度,String因为val1.length()它给人3的输出,这是完全错误的.我该如何解决问题并获得实际长度String

java

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

差异示例b/w抽象类和接口与Java 8中的默认方法

我知道已经有一个与此相关的问题,在Java 8中使用默认方法与抽象类的接口,但是在Java 8发布之前问了这个问题,它只是一个关于抽象类和接口之间有什么区别的要点.默认方法,它根本没有提供任何实际的例子,而是充满了冗长的解释.

我发布这个问题是因为我对一个实用的例子更感兴趣,它用Java 8中的默认方法清除了抽象类和接口之间的区别.

看看这个例子,

抽象类,

abstract class AbstractClass {

    public int var = 0;

    // These methods must be Overridden
    abstract int x();
    abstract int y();

    // This method is optional
    int z() {
        return 0;
    }

}
Run Code Online (Sandbox Code Playgroud)

接口(Java 8)

interface Interface {

    public int var = 0;

    // These methods must be Overridden
    int x();
    int y();

    // This method is optional
    default int z(){
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我想向一个新手Java程序员(比如我自己)解释它的实际区别,我怎么能区分上面两个?

这篇文章说,

默认方法带来的好处是,现在可以向接口添加新的默认方法,并且不会破坏实现.

这可能不是默认方法接口的唯一好处,或者是它?

java java-8

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

将if/else块转换为三元运算符时的错误答案

我试图将我的java代码从if/else块转换为三元运算符.

我的代码正在做的是找到一个数组的位置,例如,已经出现了所有整数值的位置,

如果是数组 {1,1,3,4,2,3,4,5,1,4}

答案是7因为当我的程序迭代到7th位置时,它已经发现所有先前的数字小于5.

如果数组是{3,1,1,2,1,3}答案将是3因为当我的程序迭代到3数组的位置时,它已经迭代了所有小于的值3.

现在,当我使用if/else块时,我的代码工作正常.

这是对我来说绝对合适的代码,

public static int solution1 (int arrayMaxValue, int[] myArray){

    boolean b[] = new boolean[arrayMaxValue + 1];
    for (int i = 0; i < myArray.length; i++) {
        if (!b[myArray[i]]){
            b[myArray[i]] = true;
            if (b[myArray[i]]==true)
                arrayMaxValue--;
        }
        if (arrayMaxValue==0) return i;
    }
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

但如果我将其if块转换为ternary operator ?

它输出错误,

public static int solution2 (int arrayMaxValue, int[] myArray){
        boolean b[] = …
Run Code Online (Sandbox Code Playgroud)

java arrays

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

标签 统计

java ×6

arrays ×1

java-8 ×1