• 170. Two Sum III


    最后更新

    二刷。。

    其实没那么简单。。。

    可以维持2个set,一个是所有的elements,一个存放可组合的所有sum,每次add的时候更新2个set,这样find是O(1),然而TLE了。。

    另一个做法是添加直接加,然后查的时候看看能不能组合出来所需要的值。

    edge case着实难想到= = add(0) find(0)是false。。
    一个元素似乎只能用一次。。

    public class TwoSum {
    
        Map<Integer, Integer> map = new HashMap<>();
    
        // Add the number to an internal data structure.
    	public void add(int number) {
    	    map.put(number, map.getOrDefault(number, 0) + 1);
    	}
    
        // Find if there exists any pair of numbers which sum is equal to the value.
    	public boolean find(int value) {
    	    Iterator<Integer> iter = map.keySet().iterator();
    	    while (iter.hasNext()) {
                int temp = iter.next();
                if (map.containsKey(value - temp)) {
                    if (value - temp != temp || map.get(value - temp) > 1) {
                        return true;
                    }
                }
    	    }
    	    return false;
    	}
    }
    

    还不如一刷做得好。。
    不用记录每个元素有几个,记录是不是多余1个就行了,像一刷那样。


    一刷

    主要是add2 add2 find4这种重复的情况需要注意。。

    public class TwoSum {
    
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
    
        // Add the number to an internal data structure.
    	public void add(int number) 
    	{
    	    if(map.containsKey(number))
    	    {
    	        map.put(number,2);
    	    }
    	    else
    	    {
    	        map.put(number,1);
    	    }
    	    
    	}
    
        // Find if there exists any pair of numbers which sum is equal to the value.
    	public boolean find(int value) 
    	{
            for(Integer i: map.keySet())
            {
                int need = value - i;
                if(map.containsKey(need))
                {
                    if(need == i)
                    {
                        if(map.get(i) == 2) return true;
                    }
                    else
                    {
                        return true;
                    }
                    
                    
                }
            }
            
            return false;
    	}
    }
    


  • 相关阅读:
    前端Javascript
    第十一周双闭环控制
    补第九周手绘图
    第十一周仿真作业
    第九周PLECS仿真
    第五六周读书笔记
    PLECS模拟与设计结构-4
    机电传动控制读书笔记-3
    PLECS仿真报告2
    PLECS仿真报告
  • 原文地址:https://www.cnblogs.com/reboot329/p/5935744.html
Copyright © 2020-2023  润新知