美文网首页
每周 ARTS 第 11 期

每周 ARTS 第 11 期

作者: 落英坠露 | 来源:发表于2019-06-20 08:30 被阅读0次

1. Algorithm

263. 丑数(简单)

描述:

编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。

示例:
示例:
输入: 6
输出: true
解释: 6 = 2 × 3
思路:
  • 循环实现:循环去除 2、3、5,直到不能整除,如果余数是 1,那么就是丑数。
  • 递归实现:和循环一样,也是不停地除2、3、5。
class Solution {
    public boolean isUgly(int num) {
        if (num <= 0) {
            return false;
        } else if (num == 1) {
            return true;
        }
        while (num % 2 == 0) {
            num /= 2;
        }
        while (num % 3 == 0) {
            num /= 3;
        }
        while (num % 5 == 0) {
            num /= 5;
        }
        return num == 1;
    }
  
   private static boolean isUgly2(int num) {
        if (num <= 0) {
            return false;
        } else if (num == 1) {
            return true;
        }
        if (num % 2 == 0) {
            return isUgly2(num / 2);
        }
        if (num % 3 == 0) {
            return isUgly2(num / 3);
        }
        if (num % 5 == 0) {
            return isUgly2(num / 5);
        }
        return false;
    }
}
分析:

循环和递归实现一样:

  • 时间复杂度:O(logn)
  • 空间复杂度:O(1)

349. 两个数组的交集(简单)

描述:

给定两个数组,编写一个函数来计算它们的交集。

示例:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
说明:
  • 输出结果中的每个元素一定是唯一的。
  • 我们可以不考虑输出结果的顺序。
思路:

使用一个 Set 去除数组一重复元素,另一个 Set 保存两个数组的交集

解法:
class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        if (nums1 == null || nums2 == null) {
            return new int[]{};
        }

        Set<Integer> set1 = new HashSet<>(nums1.length);
        for (int i : nums1) {
            set1.add(i);
        }
        Set<Integer> set2 = new HashSet<>(nums1.length);
        for (int i : nums2) {
            if (set1.contains(i)) {
                set2.add(i);
            }
        }
        int size = set2.size();
        int[] ret = new int[size];
        Iterator<Integer> iterator = set2.iterator();
        for (int i = 0; i < size; i++) {
            ret[i] = iterator.next();
        }
        return ret;
    }
}
分析:
  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

2. Review

What is an API? In English, please. 什么是 API?

开发者都知道 API 是应用程序接口,作者对它有更广泛的认识。API 是服务方的一部分,它接收请求并发出响应。API 是向客户提供服务的一种方式,客户端访问 API 获取消息,比如 GitHub 的 API。在面向对象编程中,对象的 public 方法也可以看作是一种 API,用来与其他对象进行交互。

3. Tip

Android I/O 那些事儿 总结了 Android 系统的 I/O 知识,对它有了更深层次的了解。

4. Share

经典是经过时间筛选的,在这个浮躁的社会,多读经典是最省时间的选择。

相关文章

  • 每周 ARTS 第 11 期

    1. Algorithm 263. 丑数(简单) 描述: 编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数...

  • 每周 ARTS 第 19 期

    1. Algorithm 46. 全排列(中等) 描述: 给定一个没有重复数字的序列,返回其所有可能的全排列。 示...

  • 每周 ARTS 第 14 期

    1. Algorithm 78. 子集(中等) 描述: 给定一组不含重复元素的整数数组 nums,返回该数组所有可...

  • 每周 ARTS 第 17 期

    1. Algorithm 1114. 按序打印(简单) 描述: 三个不同的线程将会共用一个 Foo 实例,它们会被...

  • 每周 ARTS 第 21 期

    1. Algorithm 24. 两两交换链表中的节点(中等) 描述: 给定一个链表,两两交换其中相邻的节点,并返...

  • 每周 ARTS 第 20 期

    1. Algorithm 1116. 打印零与奇偶数(中等) 描述: 有这样一个类 ZeroEvenOdd,相同的...

  • 每周 ARTS 第 18 期

    1. Algorithm 110. 平衡二叉树(简单) 描述: 给定一个二叉树,判断它是否是高度平衡的二叉树。本题...

  • 每周 ARTS 第 23 期

    1. Algorithm 62. 不同路径(中等) 描述: 一个机器人位于一个 m x n 网格的左上角 (起始点...

  • 每周 ARTS 第 24 期

    1. Algorithm 22. 生成括号(中等) 描述: 给出 n 代表生成括号的对数,请你写出一个函数,使其能...

  • 每周 ARTS 第 22 期

    1. Algorithm 15. 三数之和(中等) 描述: 给定一个包含 n 个整数的数组 nums,判断 num...

网友评论

      本文标题:每周 ARTS 第 11 期

      本文链接:https://www.haomeiwen.com/subject/xpbrqctx.html