1.两数之和-day1
这道题目中并不需要key有序选择std::unordered_map 效率更高 使用其他语言的录友注意了解一下自己所用语言的数据结构就行。接下来需要明确两点map用来做什么map中key和value分别表示什么map目的用来存放我们访问过的元素因为遍历数组的时候需要记录我们之前遍历过哪些元素和对应的下表这样才能找到与当前元素相匹配的也就是相加等于target接下来是map中key和value分别表示什么。这道题 我们需要 给出一个元素判断这个元素是否出现过如果出现过返回这个元素的下标。那么判断元素是否出现这个元素就要作为key所以数组中的元素作为key有key对应的就是valuevalue用来存下标。所以 map中的存储结构为 {key数据元素value数组元素对应的下表}。在遍历数组的时候只需要向map去查询是否有和目前遍历元素比配的数值如果有就找到的匹配对如果没有就把目前遍历的元素放进map中因为map存放的就是我们访问过的元素。public int[] twoSum(int[] nums, int target) { int[] res new int[2]; if(nums null || nums.length 0){ return res; } MapInteger, Integer map new HashMap(); for(int i 0; i nums.length; i){ int temp target - nums[i]; if(map.containsKey(temp)){ res[1] i; res[0] map.get(temp); } map.put(nums[i], i); } return res; }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2431620.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!