ARTS打卡第一周(两数之和,为什么要用springboot,cronTab,软件设计文档示例模板)

1. Algorithm:

难度:简单
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

  • 题解一
    直接嵌套便利(时间复杂度O(n^2))
 public int[] twoSum(int[] nums, int target) {
        int [] sumNums = new int[2];
        //先便利数组
        for (int i=0;i<nums.length;i++) {
            for (int j=0;j<nums.length;j++) {
                if (nums[i]+nums[j]==target&&i!=j) {
                    sumNums[0] = i;
                    sumNums[1] = j;
                    return sumNums;
                }
            }
        }
        return null;
    }

研究了别的优秀题解,使用hashMap的查询时间复杂度为0(1)的特性,可以通过元素的hashcode直接确定有无解在hashmap里,可以只便利两次,时间复杂度(O(n))

    public int[] twoSum(int[] nums, int target) {
     Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            map.put(nums[i], i);
        }
        for (int i = 0; i < nums.length; i++) {
            int complement = target - nums[i];
            if (map.containsKey(complement) && map.get(complement) != i) {
                return new int[] { i, map.get(complement) };
            }
        }
        throw new IllegalArgumentException("No two sum solution");

    }

2.Review:

本次review带来的是spring官网的对springBoot的描述:地址
Ps:并非逐字逐句翻译,只是写出一些我的总结
why springBoot?

  • springboot让独立开发变成了现实,因为只需要很少的配置(just one 【application.properties】)
  • 内置tomcat,jetty容器,不用再打war包
  • springboot封装了很多jar包变成starter,还可以用spring-boot-starter-parent来统一管理jar包版本,这样解决了大量的依赖冲突和jar包版本问题
  • springboot会自动装配第三方依赖jar包
  • 告别代码配置,xml配置
  • 提供一套度量,健康检查和配置标准

3.Tip:

linux 的crontab定时任务脚本中一定不要写相对路径。因为你可能测得脚本好好的。但是作为定时任务执行时。会因为找不到路径而与预期执行结果不符(位置在/var/spool/cron)。

4.Share:

分享一篇李智慧老师写的干货吧:软件设计文档示例模板

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章