Leetcode hot100刷题记录_1.两数之和

题目链接:1. 两数之和 - 力扣(LeetCode)

暴力解法:

 1 class Solution {
 2     public int[] twoSum(int[] nums, int target) {
 3         for(int i = 0;i < nums.length-1 ; i++){
 4             for(int j = i+1;j < nums.length;j++){
 5                 if(nums[i] + nums[j] == target){
 6                     return new int[]{i, j};
 7                 }
 8             }
 9         }
10         return new int[]{};
11     }
12 }

暴力解法一下子就能想到并且也不超时:D  只是我对java不太熟悉)

空间换时间法:

 1 class Solution {
 2     public int[] twoSum(int[] nums, int target) {
 3         Map<Integer, Integer> map = new HashMap<>();
 4         for(int i = 0;i < nums.length;i++){
 5             if(map.containsKey(target - nums[i])){
 6                 return new int[]{i, map.get(target - nums[i])};
 7             }
 8             map.put(nums[i], i);
 9         }
10         return new int[]{};
11     }
12 }

暴力方法的第二层循环需要找到和num[i]相加的和为target的元素,可以用一个map替代,节省时间。

总结:

  • 创建int数组的方法:new int[]{....}
  • 创建hashmap的方法
  • 判断是否含有key的方法、获取value的方法、插入新键值对的方法
posted @ 2025-02-08 09:56  烟雨化飞龙  阅读(41)  评论(0)    收藏  举报