每周一道算法、点评一篇英文技术文章、学习一个技术技巧、分享一个技术观点和思路
题目: 两数和
给定一个整数数组,返回这两个数字的索引,使它们相加为一个指定的数。
因为是返回两个数字的索引,所以不能对数组排序。就算排序也要保留原始的索引。
两层循环
class Solution { 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] == target - nums[j]){ return new int[]{i,j}; } } } throw new RuntimeException("not found"); } }
beats 26.64%
使用 HashMap
,空间换时间
class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer,Integer> map = new HashMap(nums.length); for(int i=0;i<nums.length;i++){ if(map.containsKey(target-nums[i])){ return new int[]{map.get(target-nums[i]),i}; } map.put(nums[i],i); } throw new RuntimeException("not found"); } }
beats 99.70%
The Key To Accelerating Your Coding Skills
在学习编程的过程中,从某个时间点开始会觉得“顿悟了”,把这个时间点称为拐点。
首先是教程阶段(3~8 周严格地编码),在此阶段应该注重细节,从错误信息中学习总结。认识到编程无法一蹴而就,是需要长期持续学习的。
其次是拐点阶段(正确心态的2-4周),在此阶段会发现你的编码效率提高了 10~20 倍。但是,不要满足,永远保持空杯心态,坚持每天进步一点点。重视基础,学习算法和数据结构。
最后通过拐点,不再一味追求新的技术,能看透新技术的本质。能根据已学得知识来学习新的技术。积累自己的代码库。
如何判断是否通过了拐点?其实就是心态的改变。接受软件开发是一个不断学习的过程。接受不断的学习是为了解决更复杂的问题。
本周分享一个 Spring Boot 的注解 @Profile
,它有什么用呢?
它可以标记在任何一个 @Component
、 @Configuration
和 @Bean
上,根据当前环境来决定是否加载。
举个例子,项目中使用到了 Swagger,只想在开发和测试环境使用。
@EnableSwagger2 @Configuration @Profile("dev","test") public class Swagger2 { // ... }
当 spring.profiles.active=dev,test
时,Swagger 才能被访问。
还可以写成非生成环境 @Profile("!prod")
注意:在 @Bean
方法上使用 @Profile
时,可能会有一个特殊情况:对于具有相同 Java 方法名称的重载 @Bean
方法(类似于构造函数重载),必须在所有重载的方法上一致地声明 @Profile
条件。
最近公司招聘 Java 开发,由我筛选简历,说说我个人从技术人员的角度来看面试机会更大的简历是什么样的。
加分项:
注意事项: