zoukankan      html  css  js  c++  java
  • [LeetCode 001] Two Sum

    Two Sum

    • HashMap中存储numbers[i]尚需要都少数值达到target,以及下表i

    Implementation

    public class Solution {
        public int[] twoSum(int[] numbers, int target) {
        	HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        	int[] result = new int[2];
        	for (int i = 0; i < numbers.length; i++) {
        		if (map.containsKey(numbers[i])) {
        			int index = map.get(numbers[i]);
        			result[0] = index;
        			result[1] = i;
        			break;
        		} else {
        			map.put(target - numbers[i], i);
        		}
        	}
        	return result;
        }
    }
    

    Two Sum II - Input array is sorted

    • 设置两个指针j指向最大值,i指向最小值
      • sum > target: jdecrease
      • sum < target: iincrease

    Implementation

    public class Solution {
        public int[] twoSum(int[] numbers, int target) {
            int left = 0;
            int right = numbers.length - 1;
            int[] result = new int[2];
            while (left < right) {
                int sum = numbers[left] + numbers[right];
                if (sum == target) {
                    result[0] = left + 1;
                    result[1] = right + 1;
                    break;
                } else if (sum < target) {
                    left++;
                } else {
                    right--;
                }
            }
            return result;
        }
    }
    

    Two Sum III - Data structure design

    • 设置一个ArrayList保存出现过的不重复的数值。
      • 遍历的时候比使用HashMapkeySet()更快
    • 设置一个HashMap保存出现过得不重复的数值,以及出现次数。
    • find()函数
      • 当value需要两个相同的数值得到时,判断该数值出现的次数是否大于1
      • 否则,判断HashMap是否包含这两个数值

    Implementation

    public class TwoSum {
        private HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        private ArrayList<Integer> list = new ArrayList<Integer>();
        // Add the number to an internal data structure.
    	public void add(int number) {
    	    if (map.containsKey(number)) {
    	        map.put(number, map.get(number) + 1);
    	    }
    	    else {
    	        map.put(number, 1);
    	        list.add(number);
    	    }
    	}
    
        // Find if there exists any pair of numbers which sum is equal to the value.
    	public boolean find(int value) {
    	    for (int i = 0; i < list.size(); i++) {
    	        int num1 = list.get(i);
    	        int num2 = value - num1;
    	        if ((num1 == num2 && map.get(num1) > 1) || (num1 != num2 && map.containsKey(num2))) {
    	            return true;
    	        }
    	    }
    	    return false;
    	}
    }
    
  • 相关阅读:
    keep-alive的深入理解与使用(配合router-view缓存整个路由页面)
    vue无法自动打开浏览器
    解决vue页面刷新或者后退参数丢失的问题
    vue 跳转并传参,实现数据实时更新
    Struts2 有关于无法正常的使用通配符
    有关于java反编译工具的使用
    Action名称的搜索顺序
    Struts2 的 值栈和ActionContext
    在Action 中访问web资源
    oracle 创建database Link
  • 原文地址:https://www.cnblogs.com/Victor-Han/p/5192407.html
Copyright © 2011-2022 走看看