• 两数之和


    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

    示例:

    给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
     
    穷举
    public class TestSum {
    	public static int[] sum(String[] nums,int target) {
    		int[] result = new int[2];
    		List arrayList = (List) Arrays.asList(nums);
    		for(int i=0;i<arrayList.size();i++) {
    			int num = target-Integer.parseInt(arrayList.get(i).toString());
    			for(int j=i+1;j<arrayList.size();j++) {
    				if(Integer.parseInt(arrayList.get(j).toString())==num) {
    					result[0] = i;
    					result[1] = j;
    				}
    			}
    		}
    		
    		return result;
    	}
    	
    	public static void main(String[] args) {
    		String[] nums = {"4","5","7","1","3","8","200","199"};
    		int target = 200;
    		int[] result = sum(nums,target);
    		System.out.println(Arrays.toString(result));
    	}
    }
    

    2.hashmap(网上) 

    class Solution {
        public int[] twoSum(int[] nums, int target) {
            return mapSolution(nums,target);
        }
        private int[] mapSolution(int[] nums, int target){
            Map<Integer, Integer> map = new HashMap<>();
            for (int i = 0; i < nums.length; i++){
                map.put(nums[i],i);
            }
    
            for (int i = 0; i < nums.length; i++){
                int num = target - nums[i];
                // 判断num是否存在,如果已经存在,则直接返回
                if (map.get(num) != null){
                    return new int[] { map.get(num), i};
                }
            }
            return null;
        }
    }
    

    3.hashmap优化

    class Solution {
        public int[] twoSum(int[] nums, int target) {
            return mapSolution(nums,target);
        }
       
        private int[] mapSolution(int[] nums, int target){
            Map<Integer, Integer> map = new HashMap<>();
            for (int i = 0; i < nums.length; i++){
                int num = target - nums[i];
                // 判断num是否存在,如果已经存在,则直接返回
                if (map.get(num) != null){
                    return new int[] { map.get(num), i};
                }
                // 不存在则当前数值与序号的映射关系存入map中
                map.put(nums[i], i);
            }
            return null;
        }
    }
    

      

  • 相关阅读:
    java基础数据
    Java环境搭建
    Mysql数据库基础
    php环境搭建
    1117bootstrap组件
    1117bootstrap
    1115表单验证
    1114JS实例4
    1113JS实例3
    1111JS实例2
  • 原文地址:https://www.cnblogs.com/jingRegina/p/12010735.html
Copyright © 2020-2023  润新知