马上五一放假了~但是,但是!!!但是五一要加班,呜呼哀哉。。。这周的打卡主要是一道回文数判断的题目,数据库方面是一道NOT IN关键字的题目,以及 REVIEW 一篇 RxJava 的文章。

Algorithm

题目描述

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

Example 1:

> Input: 121
> Output: true
>

Follow up:

Coud you solve it without converting the integer to a string?

回文数判断,一种方法是把整数转换成字符串,判断正反字符串是否相同,但是题目中要求不能使用字符串。第二种就是把整数反转,可以整转或者半转,半转的效率相对较高,所以采用半转的方法。

Java

public boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
long reverseNumber = 0;
reverseNumber = 0;
while (reverseNumber < x) {
reverseNumber = reverseNumber * 10 + x % 10;
x = x / 10;
}
return x == reverseNumber || x == reverseNumber / 10;
}

Python

def isPalindrome(self, x: int) -> bool:
if x < 0 or x % 10 == 0 and x != 0:
return False;
reverseNumber = 0;
while (reverseNumber < x):
reverseNumber = reverseNumber * 10 + x % 10
x = x // 10
return x == reverseNumber or x == reverseNumber // 10
Runtime Memory Language
84 ms 13.2 MB python
6 ms 34.5 MB java

Database

183. Customers Who Never Order

Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL query to find all customers who never order anything.

SELECT Customers.Name AS Customers
FROM Customers
WHERE
Customers.Id NOT IN
(SELECT Orders.CustomerId FROM Orders)

主要用到了NOT IN关键字。

Review

本周由于工作比较忙,所以只看了RxJava系列的文章中的第一篇。主要讲述了 Observable 以及其基本操作:

  • Create:Observable.create()方法,传入ObservableOnSubscribe对象,需要实现此对象的subscribe方法;

  • Defer:和 Create 类似,区别在于不是每次都创建新的 Observable 对象,效率更高;

  • From:从一个数组或者迭代器创建 Observable 对象,包括fromCallable(), fromFuture(), fromIterable(), fromPublisher(), fromArray()

  • Interval: 创建每隔一定时间提交时间的 Observable 对象;

  • Just:传入一系列的参数(最多10个),所创建的 Observable 对象依次把这些参数转换成 Observable 元素并进行事件发送。

    from 和 just 的区别在于 just 一次把所有的元素发布出来,但是 from 则是把元素依次发布出来

  • Range:传入两个参数分别在起始值和长度,则会发布对应的元素序列;

  • Repeat:发布时间的重复次数

    Observable.range(2, 5)
    .repeat(2) //上面的序列连续发布两次
  • Timer:创建一个 Observable 对象,该对象在特定时间之后发布一个事件;

    interval 和 timer 的区别在于 time 仅仅只发送一次事件,但是 interval 则是每隔一定时间会发布事件;

Exploring RxJava in Android — Introduction

Tips

  1. 本地和远程仓库关联:git branch --set-upstream-to <本地分支> origin/<远程分支>;

  2. 本地仓库关联远程:

    git remote add origin https://github.com/user_name/repositories_name.git
  3. 建立索引:

    CREATE INDEX index_name on table_name

Share

一篇 Android 内存优化相关的文章:Android 内存优化总结&实践