leetcode
leetcode兩數(shù)之和 java編寫
題目描述:
給定一個整數(shù)數(shù)組 nums 和一個目標(biāo)值 target,請你在該數(shù)組中找出和為目標(biāo)值的那 兩個 整數(shù),并返回他們的數(shù)組下標(biāo)。
你可以假設(shè)每種輸入只會對應(yīng)一個答案。但是,數(shù)組中同一個元素不能使用兩遍。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
方法一:暴力算法:這種方法太消耗性能,時間復(fù)雜度為O(n*n)
public int[] twoSum(int[] nums, int target) {for(int i=0;i<nums.length;i++) {for(int j=i+1;j<nums.length;j++) {if(nums[i]+nums[j]==target) {return new int[] {i,j};}}}return null;}方法二:解法二:先用哈希表存儲,然后再調(diào)用containsKey判斷count是否存在map容器中 時間復(fù)雜度為O(n)
public int[] twoSum2(int[] nums, int target) {HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();for(int i=0;i<nums.length;i++){map.put(nums[i], i);}for(int i=0;i<nums.length;i++) {int count=target-nums[i];if(map.containsKey(count)==true) {return new int[] {i,map.get(count)};}}return null;}總結(jié)
- 上一篇: 【数据结构与算法】二叉树
- 下一篇: 浅析PetShop程序中的购物车和订单处