小编Bor*_*is 的帖子

阵列不同部分的两个最大值的最大绝对差值是多少?

那是我在这些日子里失败的面试问题.我朋友中没有人知道错误在哪里以及为什么我被告知我失败了.这就是为什么我决定要求你纠正我的解决方案给定N个整数的数组.整数K将数组分成两个子数组.

  Left part: A[0], A[1]...A[K];
  Right part: A[K+1], A[K+2]... A[N-1];
Run Code Online (Sandbox Code Playgroud)

需要找到每个子阵列中最大可能的最大绝对差值.

 MaxDiff = Math.Abs(Max(A[0], A[1]...A[K]) - Max(A[K+1], A[K+2]... A[N-1]))
 Example 1: [1, 3, -3]. If K=1, max difference is |3-(-3)| = 6.
 Example 2: [4, 3, 2, 5, 1, 1]. If K=3, max difference is |5 - 1| = 4.
Run Code Online (Sandbox Code Playgroud)

时间和空间复杂度应为O(n).我看到我的解决方案的空间复杂性已经不是O(n)了..

int getMaxDifference(int[]A){
    int [] leftMax = new int [A.length];
    int [] rightMax = new int [A.length];
    int max1 = Integer.MIN_VALUE;
    int max2 = Integer.MIN_VALUE;
    int dif = 0;
    int …
Run Code Online (Sandbox Code Playgroud)

java arrays algorithm

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

如何计算HashMap中唯一值的数量?

我在这里看到了很多关于如何使用ArrayList和HashMaps的好解决方案,但重点是我仍然无法解决我的问题.

所以,这个想法是很少有人喝啤酒,葡萄酒和可乐.所以,它看起来像(例如):

Steve wine
Steve cola
Ben cola
Frank wine
Ben cola
Ben cola
Frank wine
Run Code Online (Sandbox Code Playgroud)

最后,我需要计算他们每人喝多少杯饮料.所以,答案应该是这样的:

Steve wine 1
Steve cola 1
Ben cola 3
Frank wine 2
Run Code Online (Sandbox Code Playgroud)

我的想法是创建一个对象Person(String name,String drink).然后我将所有人都放到ArrayList中.之后我创建了HashMap,并希望在键不存在时添加新Person,如果key已存在则增加到1.

    Map<Person, Integer> map = new HashMap<Person, Integer>();

    for (Person p : persons)
    {
        if (map.containsKey(p)) {
            map.put(p, map.get(p)+1);
        } else {
            map.put(p,1);
        }
   }
Run Code Online (Sandbox Code Playgroud)

它不起作用.它只返回我的结果:

 Steve wine 1
 Steve cola 1
 Ben cola 1
 Frank wine 1
 Ben cola 1
 Ben cola 1
 Frank wine 1
Run Code Online (Sandbox Code Playgroud)

所以,据我所知,这应该是其他一些技巧.也许你还可以告诉任何其他关于如何计算饮料杯数而不是使用HashMap的想法?非常感谢!

java arraylist hashmap

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

标签 统计

java ×2

algorithm ×1

arraylist ×1

arrays ×1

hashmap ×1