小编Vis*_*ula的帖子

java中HashMap.containsValue()的时间复杂度是多少?

我在O(n)时间复杂度方面遇到了问题:

"给定一个数字列表和数字x.查找列表中是否有任何2个数字加起来为x?"

这是我的解决方案:

public class SumMatchResult {

  public static void main(String[] args){
    int[] numberList = {6,1,8,7,4,6};
    int requiredSum = 8;
    boolean isSumPresent = checkSumPresentHash(numberList,requiredSum);
    if(isSumPresent) {
      System.out.println("Numbers exist");
    }else {
      System.out.println("Numbers donot exist");
    }
  }

  private static boolean checkSumPresentHash(int[] numberList, int requiredSum) {
    Map<Integer, Integer> m = new HashMap<Integer,Integer>();
    int count = 0;
    for(int i=0;i<numberList.length;i++){
      m.put(i, numberList[i]);
    }
    for(int i=0;i<numberList.length;i++){
      if(m.containsValue(requiredSum - numberList[i])){
        count++;
      }
    }
    if(count>1){
        return true;
    }
    return false;
  }

}
Run Code Online (Sandbox Code Playgroud)

我正在使用HashMap.containsValue()而不是使用HashSet.contains() …

java optimization performance hashmap

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

标签 统计

hashmap ×1

java ×1

optimization ×1

performance ×1