小编Oma*_*r N的帖子

为什么这个算法的Big-O复杂度为O(n ^ 2)?

我知道这个算法的大O复杂性O(n^2),但我不明白为什么.

int sum = 0; 
int i = 1; j = n * n; 
while (i++ < j--) 
  sum++;
Run Code Online (Sandbox Code Playgroud)

即使我们j = n * n在开始时设置,我们在每次迭代期间递增i并递减j,所以迭代的结果数量是否应该小于n*n

algorithm complexity-theory big-o time-complexity asymptotic-complexity

54
推荐指数
4
解决办法
6168
查看次数

当n为偶数时针对x ^ n优化的递归方法

我需要编写一个使用Java的递归方法,称为power,它接受一个双x和一个整数n并返回x ^ n.这是我到目前为止所拥有的.

public static double power(double x, int n) {
    if (n == 0)
        return 1;
    if (n == 1)
        return x;
    else
        return x * (power(x, n-1));

}
Run Code Online (Sandbox Code Playgroud)

此代码按预期工作.但是,我正在努力加倍努力并执行以下可选练习:

"可选挑战:当n为偶数时,你可以使用x ^ n =(x ^(n/2))^ 2来提高这种方法的效率."

当n是偶数时,我不确定如何实现最后一个公式.我不认为我可以使用递归.我试图实现以下内容,但它也不起作用,因为我不能把一个双倍的功能.

if (n%2 == 0)
        return (x^(n/2))^2;
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?我觉得我错过了一些明显的东西.所有帮助赞赏.

java recursion exponentiation

37
推荐指数
5
解决办法
6841
查看次数

如何正确抛出nullPointerException?

我需要编写一个delete()带有int参数k 的方法,并删除链表中的第k个元素(如果存在).我也想看看列表是空的,还是k超出界限.如果其中任何一个都是真的,我想扔一个NullPointerException.我到目前为止的代码如下.

    public void delete(int k){
      Node current = head;
      for (int i = 0; i < k; i++){
          if(head == null && current.next == null){
              throw new NullPointerException();
              }
          else 
          {
              current = current.next; // Move pointer to k position
          }
      }
      remove(current.item);
      --N;  
  }
Run Code Online (Sandbox Code Playgroud)

当我用一个我知道将为null的值执行它时,我得到以下输出:

Exception in thread "main" 
java.lang.NullPointerException
at hw4.LinkedList.delete(LinkedList.java:168)
at hw4.LLTest1.main(LLTest1.java:23)
Run Code Online (Sandbox Code Playgroud)

但是,如果我throw new NullPointerException();从我的代码中删除该行,我仍然会在执行代码时得到相同的错误消息,其中我知道该值将为null.

我的问题是,我throw new NullPointerException();是否正确地执行了命令,如果没有,我该如何修复它的实现呢?

java linked-list

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

为什么我收到"必须是肯定的"错误?

我正在尝试编写模拟拼字游戏的代码.我设计了一个应该模拟拼字游戏包的类,我试图通过在选择随机磁贴后在main中打印tileID来测试它.每当我运行代码时,我不断收到以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: bound must be positive at java.util.Random.nextInt(Random.java:388) at hw3.RandomBag.randomPick(RandomBag.java:39) at hw3.RandomBag.main(RandomBag.java:59

有人能告诉我为什么我收到这个错误吗?

import java.util.*;

public class RandomBag<E> implements Iterable<E> {

    // instance varibles
    private List<E> bag; // arraylist as the container
    private Random rand; // random number generator

    // constructors
    public RandomBag() { 
        bag = new ArrayList<E>();
        rand = new Random();    
    }

    public RandomBag(int seed) { 
        bag = new ArrayList<E>();
        rand = new Random(seed);

    }

    // returns the size of the bag
    public int size() …
Run Code Online (Sandbox Code Playgroud)

java random

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

如果布尔值在 Java 中是不可变的,我该如何更改这个布尔值?

下面的代码打印为真。

public static void main(String[] args) {

        Boolean test = false;
        test = true;
        System.out.println(test);
Run Code Online (Sandbox Code Playgroud)

如果布尔值在 Java 中是不可变的,我如何将测试从 false 更改为 true?它不应该给我一个错误吗?

boolean immutability

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

如何编写一个找到两点之间最大距离的O(n ^ 2)方法

我有一个阵列 int [] nums = {5, 1, 6, 10, 4, 7, 3, 9, 2}

我想在O(n ^ 2)时间内找到该数组中最小和最大数字之间的距离.根据分配的要求,它需要是O(n ^ 2)时间.为此,我正在编写一个名为的方法quadratic.到目前为止,我已经提出了以下代码.

public static int quadratic(int[] nums) {

    int max = nums[0];
    int min = nums[0];

    for (int i = 0; i < nums.length; i++) {
        for (int j = 0; j < nums.length; j++) {

            if (nums[i] > nums[j])
                max = nums[i];
            else if (nums[i] < nums[j])
                min = nums[i];  
            }
        }

    int maxDifference = max - min;
    return maxDifference; …
Run Code Online (Sandbox Code Playgroud)

java arrays algorithm

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

虽然Java中的循环不会对文档的最后一行执行操作

我有一个文本文档,如下所示:

2 2 1 4 2 8
2 4 1 4 2 8
2 6 1 4 2 8
Run Code Online (Sandbox Code Playgroud)

我想找到第二列(2,4,6)中所有数字的平均值.我写了一个我认为应该这样做的循环.totalVal是加在一起的所有数字的总值,totalNum是数字的总数.

String line = data.nextLine();// read one line into a String

while (data.hasNextLine()) {
    String[] field = line.split(" ");
    totalVal += Double.parseDouble(field[1]);
    totalNums += 1;
    line = data.nextLine();
}   
System.out.println(totalVal / totalNums);
Run Code Online (Sandbox Code Playgroud)

问题是,我得到的答案返回值3,这意味着它只取文档中前两行文本的平均值,并省略第三行.

有人可以告诉我如何更改循环以便它在第三行文本中添加值吗?

java while-loop

0
推荐指数
2
解决办法
418
查看次数

这些在Java中复制数组的方法有什么不同?

我想复制一个数组.通常,我会做这样的事情.

int[] a1 = {1, 2, 3};
int[] a2 = a1
Run Code Online (Sandbox Code Playgroud)

最近,我看到我的教授这样做:

int[] ar1 = {1, 2, 3};
int[] ar2 = Arrays.copyOf(ar1);
Run Code Online (Sandbox Code Playgroud)

这样做比另一种方式有优势吗?主要区别是什么?

java arrays

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

为什么我的equals方法无法识别对象变量?

我只是想编写一个比较学生姓名和部分的equals方法.如果名称和部分相同,则equals方法应该打印为true.否则它应该打印错误.

以下是我到目前为止的情况.

public class Student {

    private String name;
    private int section;

    public Student(String name, int section) {
        this.name = name;
        this.section = section;
    }

    public boolean equals(Object y) {

        if (this.name.equals(y.name) && this.section.equals(y.section)) {
            return true;    
        }
        else {
            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

错误是y.namey.section.Eclipse告诉我name并且section无法解析为某个字段.

我的问题是,有人可以告诉我如何修复我的代码,以便我可以使用.equals()方法比较学生姓名和部分吗?

java equals

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

为什么我不能将T语言转换为比较器中的另一个对象?

我正在尝试制作一个比较器,我可以用它来按自然顺序对字符串进行排序.我希望比较器是通用的,这样我就可以通过它传递来自任何类的字符串.

例如,我有一个Name实现可比较的类,使得Name字符串的自然顺序是字符串的长度.但是,在某些情况下,我希望Name字符串按其自然顺序排序.为此,我在下面写一个比较器.

import java.util.Comparator;

public class AlphabeticalOrderComparator implements Comparator<T> {

    public int compare(T obj1, T obj2) {

        Name name1 = (Name)obj1;
        Name name2 = (Name)obj2;

        return name1.name.compareTo(name2.name);
    }
Run Code Online (Sandbox Code Playgroud)

我得到的代码错误是它告诉我T无法解析为一个类型.我相信问题出在我的类型转换TName.

谁能告诉我如何解决这个错误?

java casting comparator

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