本文共 2827 字,大约阅读时间需要 9 分钟。
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
来源:力扣(LeetCode)
链接:class Solution { public int[] twoSum(int[] nums, int target) { int[] result = new int [] { 0,0}; for(int i=0;i
很简单的一个功能,脑袋里面第一时间的想法。事后总结,这只能算一个码农级别的解法。
执行用时 :46 ms, 在所有Java提交中击败了44.75%的用户
内存消耗 :35.8 MB, 在所有Java提交中击败了97.76%
看到内存消耗和执行时间,很容易想到用空间换时间的办法来优化。很可惜的是,自己陷在第一个解法的思维里面,跳不出来。或者说,根本想不到。
带着疑惑,看了官方的答案,第一个和自己的一样。第二个就是打击到我了,根本没有想到用HashMap来转换值和序列的关系,总是想这要减少时间,但是又想不到用操作时间复杂度是O(1)的HashMap的get来做!后续查询了下,这个几乎是常规操作,貌似在《疯狂Java讲义》里面有提到。
class Solution { public static int[] twoSum(int[] nums, int target) { Map, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { ArrayList key = new ArrayList<>(); key.add(nums[i]); key.add(target - nums[i]); Collections.sort(key); System.out.println(key); if (i!=0 && map.containsKey(key) && nums[i]+nums[map.get(key)]==target) { return new int[] { i, map.get(key) }; } else { map.put(key, i); } } throw new IllegalArgumentException("No two sum solution"); }}
属于自己用力过猛的解法!因为只看了官方中的两遍Hash的解法,想自己写出一遍的解法,最后又了这个解法。但是实际上自己有想过在两遍Hash的方法中找一遍Hash的解法,但是自认为不可能!呵呵。
class Solution { public int[] twoSum(int[] nums, int target) { Mapmap = 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); } throw new IllegalArgumentException("No two sum solution");}}
List和HashMap的映射关系转换,可以让查询更加快速,便捷。
在一台虚拟机或实体机中安装docker,可参考:
在/etc/docker中找到daemon.json文件,没有则创建。添加私服司nexus信息:
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"], "insecure-registries": ["192.168.126.96:8098"]}
重启docker,生效配置
systemctl daemon-reloadsystemctl restart docker
docker pull 192.168.126.96:8098/{ image-name}:{ tag}
导出镜像,到/abc目录下,文件名为:{file-name}.tar
docker sava -o /abc/{ file-name}.tar { image-name}:{ tag}
复制导出的镜像文件到需要部署的机器,导入镜像到docker。在部署机器中运行镜像
docker load < /root/{ file-name}.tar或者docker load -i { file-name}.tar
docker tag 192.168.126.96:8098/{ image-name}:{ tag} remote-ip:port/{ image-name}:{ tag}docker push remote-ip:port/{ image-name}:{ tag}
参与改进了下:
转载地址:http://mtsni.baihongyu.com/