# 第三十七周ARTS总结
# Algorithm
12ms | 20.40% Run time
37MB | 100.00% Memory
public String multiply(String num1, String num2) {
// 判断是否有0
if ("0".equals(num1) || "0".equals(num2)) {
return "0";
}
// 构造一个数组用来存放最终结果
int[] ans = new int[num1.length() + num2.length()];
for (int i = 0; i < num1.length(); i++) {
for (int j = 0; j < num2.length(); j++) {
int num = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');
insert(ans, num,
(num1.length() - 1 - i) + (num2.length() - 1 - j));
}
}
// 输出
StringBuilder sb = new StringBuilder();
boolean start = false;
for (int i = ans.length - 1; i >= 0; i--) {
if (ans[i] == 0 && !start) {
continue;
} else {
start = true;
sb.append(Integer.toString(ans[i]));
}
}
return sb.toString();
}
/**
* 将数字插入数组
*
* @param ans 数组
* @param num 单个数的乘积
* @param zeros 0的个数
*/
private void insert(int[] ans, int num, int zeros) {
// 索引
int index = zeros;
// 进位
int carry = 0;
// 被加数
char[] chs = Integer.toString(num).toCharArray();
// 从后往前遍历相加
for (int i = chs.length - 1; i >= 0; i--) {
int indexNum = chs[i] - '0' + ans[index] + carry;
carry = indexNum / 10;
ans[index++] = indexNum % 10;
}
// 进位
while (carry > 0) {
int indexNum = ans[index] + carry;
carry = indexNum / 10;
ans[index++] = indexNum % 10;
}
}
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# Review
# Tip
EditText
的clearFocus()
方法无效 [1] (opens new window):clearFocus
并不是真的清除焦点,而是在整个布局中遍历获取focusInTouchMode
为true的View
,如果EditText
为第一个,就又重新设置了焦点,陷入了死循环,所以才会看上去无效,解决方法只需要将EditText
之前的View
设置如下属性:android:focusableInTouchMode="true"
1- 码率、分辨率、帧率 [2] (opens new window)
- 码率:指图像的精密度,像素的个数
- 分辨率:期望的压缩后视频的大小
- 帧率:每秒显示帧数
adb
常用命令:adb devices
:列出所有已连接设备adb tcpip 5555
:设置目标设备以监听端口5555上的TCP/IP连接adb connect host[:port]
:通过TCP/IP连接到设备,如果您未指定端口,则使用默认端口5555adb disconnect [host | host:port]
:断开与在指定端口上运行的指定TCP/IP设备的连接adb kill-server
:终止adb服务器adb install path_to_apk
:安装APKadb pull remote local
:从设备中复制某个文件或目录(及其子目录)adb push local remote
:将某个文件或目录(及其子目录)复制到某个设备adb shell
:进入shellam
:调用Activity管理器pm
:调用软件包管理器
Toolbar
内部左侧始终有一段空白,无法填充,只需 [3] (opens new window)app:contentInsetLeft="0dp" app:contentInsetStart="0dp"
1
2- 利用
BitmapRegionDecoder
可以实现加载大图
# Share
暂无内容