【ARTS-0】准备开始 ARTS

虽然加入耗子叔的极客时间专栏有一段时间,但一直没有细看,知晓 ARTS 也是最近两天的事情,准备的不太充分,今天只达到了一部分目标,算是一次试练吧

Algorithm

  1. 题目(leetcode15)

    给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。

    注意:答案中不可以包含重复的三元组。

  2. 解题

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
    Arrays.sort(nums);
    int sum = 0;
    List<List<Integer>> list = new ArrayList();
    for (int i = 0; i < nums.length - 2; i++) {
    if (i != 0 && nums[i] == nums[i - 1]) {
    continue;
    }
    int leftNum = nums[i], middleIndex = i + 1, rightIndex = nums.length - 1;
    int otherSum = sum - leftNum;
    while (middleIndex < rightIndex) {
    if (otherSum == nums[middleIndex] + nums[rightIndex]) {
    list.add(Arrays.asList(leftNum, nums[middleIndex], nums[rightIndex]));
    while (middleIndex < rightIndex && nums[middleIndex] == nums[middleIndex + 1]) {
    middleIndex++;
    }
    while (middleIndex < rightIndex && nums[rightIndex] == nums[rightIndex - 1]) {
    rightIndex--;
    }
    middleIndex++;
    rightIndex--;
    } else if (otherSum < nums[middleIndex] + nums[rightIndex]) {
    while (middleIndex < rightIndex && nums[rightIndex] == nums[rightIndex - 1]) {
    rightIndex--;
    }
    rightIndex--;
    } else {
    while (middleIndex < rightIndex && nums[middleIndex] == nums[middleIndex + 1]) {
    middleIndex++;
    }
    middleIndex++;
    }
    }
    }
    return list;
    }
    }

Review

英文读书时就很差,所以对英文阅读一直很抵触,每次能找中文网站的绝不看英文版,实在只有英文的也是 copy 至 google 翻译看。今天完成了平时的目标外,只做了两道简单的算法题,英文技术文章的一般从哪看都还没有摸着门(刚看到耗子叔推荐了 Medium)。 立一个 flag:接下来的自己从入门到精通,每周认真看一篇英文技术文章,并输出总结(即 ARTS 中的 Review)。

TIPS

由于从事 Java 开发,以前一直深耕于公司的业务里面,技术实力一直很一般;最近开始在看 Spring 入门的教程,今天主要学习的是 AOP。

对于编程的惯性思维一直认为程序从头到尾都是一条线下来的,可以清晰的知道方法的调用者和被调用者是谁。今天接触的 AOP 却是在不动源代码的情况下,加入了日志等功能。

Spring AOP默认使用 JavaSE 动态代理(针对于实现了接口的类),而针对没有实现接口类则使用 CGLIB 动态代理,CGLIB 使用继承类的方式实现动态代理,所以无法代理 final 方法。

Share

10年上大学,14年勉强找了一份工作可以过的还将就,去年年中的时候通过 stormzhang 慢慢接触到一个新的圈子,渐渐的明确了短时期内自己的目标:Java 高级程序员。实现目标的攻略也是耗子叔写的:https://time.geekbang.org/column/article/8701

Newer Post

【Java】技能框架&面试点

基础模块: 技术岗位与面试 计算机基础 JVM原理 多线程 设计模式 数据结构与算法 应用模块: 常用工具集 常用框架 缓存 队列 数据库 综合模块: 系统架构设计 微服务架构 容器化 …

Java, 框架, 面试 继续阅读
Older Post

【JVM】JDK10的G1日志浅谈

最近学习《深入理解Java虚拟机》,书中使用的是JDK1.7,垃圾收集器使用CMS;而笔者环境为JDK10,垃圾收集默认使用G1。G1与CMS之间的差异挺大,日志格式也截然不同,而目前主流的是G1收集器,故重点学习G1。笔者最近入门学习JVM,以下理解有错的烦请指出,不甚感激~ 测试一 测试代码 …

JVM, 深入理解JAVA虚拟机, 读书笔记 继续阅读