其他分享
首页 > 其他分享> > Leet Code中文版刷题01

Leet Code中文版刷题01

作者:互联网

#两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:
给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解法一:暴力破解O(n^2)

class Solution 
{    
	public int[] twoSum(int[] nums, int target) {        
		int[] ret = new int[2];        
		for(int i = 0; i<nums.length; i++)        
		{            
			for( int j = i+1; j<nums.length; j++)   
			{             
				 if(nums[i]+nums[j]==target)                
				 {                   
					 ret[0] = i;                    
					 ret[1] = j;                
				}         
		   	}     
	      	}      	
		return ret;   
	}
}

解法二:使用Map类O(n)(引用于Lnho

class Solution {    
	public int[] twoSum(int[] nums, int target) 
	{        
		Map<Integer,Integer> map = new HashMap<>();        
		for( int i = 0; i<nums.length; i++)        
		{            
			Integer index = map.get(target - nums[i]);           
			if(index == null)            
			{                
				map.put( nums[i], i);           
			}             
			else           
			{                
				return new int[]{ i, index};            
			}       
		}        
		return new int[]{ 0, 0};   
	}
}
qq_39605860 发布了1 篇原创文章 · 获赞 0 · 访问量 80 私信 关注

标签:Map,Leet,Code,target,nums,int,01,数组,new
来源: https://blog.csdn.net/qq_39605860/article/details/104002321