小编AKS*_*AKS的帖子

赢得Snake Ladder的最低步骤

给定一个蛇和梯子游戏,编写一个函数,返回最小跳跃数量,以取得顶部或目标位置.你可以假设你抛出的骰子总是有利于你

**

这是我的解决方案,但不确定它是否正确.

这个问题类似于数组中的青蛙跳跃.但在此之前,我们必须以该格式对问题进行建模.

如果没有蛇或梯子,则创建一个大小为100的数组和每个位置存储器6.店铺跳数.如果梯子出现在那一点上.如果存在蛇,则存储-ve跳转到该位置.

现在我们必须解决我们可以达到的最小步数.在O(n ^ 2)时间复杂度和O(n)空间中使用动态编程可以解决主要问题.

arrays algorithm

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

在每个元素的数组中查找下一个更高的元素

从给定的输入数组中,对于每个元素,找到每个数组中存在的下一个更高元素.例如{40,50,11,32,55,68,75}输出应该是{50,55,32,55,68,75,-1}.对于元素,如果不存在更高元素,则打印-1.

复杂性应该小于O(n^2).您可以使用数据结构而不限制空间复杂性.

algorithm data-structures

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

有人可以在动态编程中解释最佳子结构吗?

我一直在努力理解动态编程,我理解的是DP有两个部分. 1.最优子结构2.重叠子问题

我理解第二个,但也无法获得第一个.

有人可以用简单的英语解释一下易于理解的例子吗?

algorithm dynamic-programming data-structures

12
推荐指数
2
解决办法
7919
查看次数

Comparator 可以比较两个不同类型的对象吗?

我有两个类 Person 和 Employee 的对象。两个类都有共同的属性年龄。我已经将这两个类的几个对象添加到 Arraylist 中,现在我想要两个编写一个 Comparator 并将其传递给 Collections 类的 sort 方法。并希望根据年龄对列表进行排序。我正在尝试这样做只是为了更清楚地了解 Java 中 Comparable 和 Comparator 的使用。

编辑:我问这个问题的原因是我不清楚 Comparator 和 Comparable。我在某处读到如果 Class 实现 Comparable 那么它不能与其他类的对象进行比较(因为 Class cast 异常)。

现在,如果我在 Employee 和 Person 中创建关系,则不需要实现 Comparator (除非我想根据这些类的名称或其他公共属性进行排序)。

再一次,我问这个问题是为了更清楚地了解 Comparator 和 Comparable。

到目前为止,我能够理解的是,如果我想对多个参数进行排序,那么我应该实现 Comparator 并将其传递给 Collections.srot()。

或者,如果我无法控制正在排序的对象的类,那么自定义排序我应该实现 Comparator。(如果我错了或者我遗漏了什么,请纠正我)

编辑

我想现在我明白了 Comparable 和 Comparator 的使用。为了确保我得到了正确的概念,这是我的理解:如果我想比较不同类的两个对象(并且没有关系),那么我应该使用原始比较器并覆盖比较方法。有人会实现 Comparator 而不是 Comparable 的另一个原因是排序的灵活性。而我从自然排序中了解到的是 Class 在 CompareTo 方法中实现的逻辑。

希望我对所有这些观点都是正确的。

java comparator

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

如何覆盖类文件 (asm.ClassWriter.getCommonSuperClass)?

What I am trying to do?
Run Code Online (Sandbox Code Playgroud)

我正在尝试在特定方法的开头和结尾添加 try/catch 块。

Why am I overriding asm.ClassWriter.getCommonSuperClass(String class1,String class2)?
Run Code Online (Sandbox Code Playgroud)

我正在使用标志 COMPUTE_FRAMES,因此,正在调用 asm.ClassWriter.getCommonSuperClass() 这个类,它试图使用 class.ForName() 再次加载一些类,并说 classNotFoundException。我在某处阅读以覆盖此方法并确保它加载了这两个类。我得到了 Instrumentation 对象并得到了所有加载的类,但仍有一些类没有加载,这个方法抛出 NullPointer 异常..

Any suggesstions how to override it? 
Run Code Online (Sandbox Code Playgroud)

根据以下回复编辑问题

我在这里的理解是:

1. 如果我想为方法内容添加 try/catch 块,则无需使用 COMPUTE_FRAMES 而不是 COMPUTE_MAXS。

2. 如果我只想为方法内容添加 try/catch 块,(仅假设 jdk8)那么我只需要编写 try/catch 块 ASM 部分,其余部分应该就位。

对于从线程调用的方法:

public void execute()throws IOException{
//some code

}
Run Code Online (Sandbox Code Playgroud)

下面的代码应该添加 try/catch 块并且不应该给出任何 java 验证错误?:

private Label startFinally = new Label();
  public void visitMaxs(int maxStack, int maxLocals) {
       Label endFinally = …
Run Code Online (Sandbox Code Playgroud)

bytecode java-bytecode-asm

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

在Java中,为什么在某些集合实现中允许null而在其他集合中不允许?

在Java中,通常,一些集合实现允许null元素,而有些则不允许.它与垃圾收集有关吗?

java collections

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

为什么ConcurrentHashMap中的HashEntry是最终的?

我正在浏览ConcurrentHashMapjdk 7中的源代码并且几乎没有问题.我已经在StackOverFlow上完成了有关CHM的所有问题,但找不到答案.

  1. get()CHM中的操作是否保证put()由其他线程获得正确的值?我问这是因为get不是,synchronized除非它看到null值.null值如何确保其他线程正在更新相同的记录然后get与lock一起使用?

  2. 这与HashEntry存储键和值的静态类有关.

    一个.为什么这堂课最后?它只是为了确保没有人对它进行子类化吗?如果有人将其子类化,会发生什么 - 这有什么问题?

    湾 如何使下一个字段最终有助于获得线程安全?

    C.为什么Key也是最终的?(我不确定为什么Key也是最终的HashMap)

java collections multithreading concurrenthashmap java.util.concurrent

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

如何按顺序进行多线程处理?

这是我试图解决的问题,但不知道该怎么做:我有一个对象数组(比如大小为100),每个对象都有一些id.

Class Employee{
   int EmployeeId;
}
Run Code Online (Sandbox Code Playgroud)

有10个线程将从该数组中读取数据并将其插入数据库.

如何确保数据按照递增顺序的EmployeeId顺序插入到DB中. 例如:

如果array具有EmployeeID 6,8和4的对象,那么这些对象应按照EmployeeID 4,6和DB中的8顺序插入到DB中.如何为此编写多线程代码?

更新:请忽略数据库部分,如果它令人困惑,我的主要目的是同时处理,但按顺序处理.

java concurrency multithreading

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

为什么java无法从死锁中恢复?

我正在阅读"Java Concurrency in Practice"一书,这里有关于死锁的内容.

JVM无法从死锁中恢复,只有摆脱死锁的方法是重启服务器.它还提到JVM使用图搜索,其中Thread充当图节点,并且两个线程A和B之间的边缘被定义为线程A正在等待线程B已经拥有的资源上的锁定.此图是有针对性的,如果有任何周期这个图表,然后有死锁

现在我的问题是,如果JVM知道存在死锁,那为什么不杀死一个线程并让其他线程继续?这背后是否有任何具体原因或我的问题本身是基于错误的结论?

请告诉我您对此的看法.提前致谢!!!

java multithreading jvm

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

java中静态变量的线程安全性

我的问题与静态变量的线程安全性有关.

Class A{
private static int test=0;
public static void synchronized  m1(){
    test=test+1;
}
public void synchronized  m2(){
   test=test+1;
}

}
Run Code Online (Sandbox Code Playgroud)

如果两个线程,t1具有静态锁定,t2具有对象锁定,可以同时继续,那么A类的状态测试将如何是线程安全的?

可能是,我遗漏了一些非常基本的东西,但不确定它是如何工作的.

基于以下答案,我得到的印象是,如果必须使这些状态成为线程安全的,那么两个锁都应该由更新此状态的线程保持,或者确保仅通过静态方法或仅通过静态方法访问它非静态方法.对?

java concurrency multithreading

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