从‘单打独斗’到‘团队协作’:聊聊LangChain里那些不同性格的Agent Types该怎么选
2026/5/4 17:39:30
大家好,今天来讲解力扣经典入门题「两数之和」,分享如何用哈希表实现时间复杂度 O (n) 的高效解法。
给定整数数组nums和目标值target,找出数组中和为 target 的两个整数,返回它们的下标。
最直观的思路是双重循环遍历数组(时间 O (n²)),但数据量大时效率很低。
利用哈希表存储 “数值 - 下标”,遍历数组时直接查找target - 当前数是否存在,实现一次遍历完成查找:
class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> map=new HashMap<>(); // 遍历数组 for(int i=0;i<nums.length;i++){ // 计算需要找的互补数 int complement = target - nums[i]; // 若互补数已在哈希表中,直接返回下标 if(map.containsKey(complement)){ return new int[]{map.get(complement),i}; } // 否则将当前数和下标存入哈希表 map.put(nums[i],i); } // 题目保证有解,这里仅为语法要求 return new int[0]; } }HashMap用来存已经遍历过的元素(键是数值,值是下标)。complement = target - nums[i]。这个解法是「两数之和」的最优解之一,既简洁又高效,非常适合入门学习哈希表的应用~