【LeetCode】#170 两数之和 III - 数据结构设计

文章目录

  • 题目
  • find方法的改进

题目

设计b并实现一个 TwoSum 类。他需要支持以下操作:add 和 find。
add -把这个数添加到内部的数据结构。
find -是否存在任意一对数字之和等于这个值

vector

  • 动态数组

  • 允许重复

  • 声明 初始化

    • List item
    • vector nums; 空的默认为0
    • nums.push_back(1);
    • nums.empty();
    • nums.size();
    • 移除所有元素 nums.clear();
    • 【LeetCode】#170 两数之和 III - 数据结构设计_第1张图片【LeetCode】#170 两数之和 III - 数据结构设计_第2张图片

find方法的改进

对算法的执行效率改进
利用map,可以以O(1)的时间进行全局查找
所以时间复杂度为O(N)

bool find(int value){
    Map<Integer,map> map = new HashMap<>();
    for(int i =0 ; i<num.size();i++){
        int target = value -num[i];
        if(map.contains(target)){
            return new int[]{i,map.get(target)};//通过值获取到下标
        }
        map.put(num[i],i);//key,value
    }
    throw new IllegalArgumentException("unfind!");
}
``

你可能感兴趣的:(LeetCode,算法,java,leetcode)