01-Kotlin的WhenElse一共有几种写法
Int等基本类型的WhenElse
1 | private fun whenElseInt(intNumber: Int) { |
编译后的字节码
1 | private final static whenElseInt(I)V |
可以看到,编译器生成了TABLESWITCH指令,可以根据数值快速查表,找到跳转位置
如果是一下几种情况,则不会生成TABLESWITCH
1 | private fun whenElseInt(intNumber: Int) { |
编译后的字节码
1 | private final static whenElseInt(I)V |
可以看到,编译器生成了TABLESWITCH指令,可以根据数值快速查表,找到跳转位置
如果是一下几种情况,则不会生成TABLESWITCH
flowchart TD
A[开始] --> B{过滤事件}
B -->|true| C{是否ACTION_DOWN}
B -->|false| D[返回false]
C -->|true| E[清除TouchTargets,重置TouchState]
C -->|false| F{111}
E --> G[调用onInterceptTouchEvent]@{ shape: comment, label: "计算新事件的x,y,传递给child\n若child空,调用super.dispatchTouchEvent" }
G --> J[处理hover事件]
J --> F[遍历TouchTarget,调用dispatchTransformedTouchEvent传递event]
F --> H[如果是up/cancel,重置TouchState]
H --> I[返回是否handle]
FILTER_TOUCHES_WHEN_OBSCURED,event存在flag:FLAG_WINDOW_IS_OBSCURED,就丢掉1 | public void setFilterTouchesWhenObscured(boolean enabled) { |
调用view的这个函数,就会设置这个flag
循环与数组的length比较
1 | public class JavaMain { |
将数组length存在方法栈中
1 | public class JavaMain { |
for-each循环
1 | public class JavaMain { |
1 | public class JavaMain { |
1 | result = 360970567, time = 1.393 |
1 | class Solution { |
1 | class Solution { |
第一行输入一个正整数,代表矩阵大小。
接下来的行,每行输入一个长度为
的 01 串,用来表示矩阵。
输出行,第
行输出
的完美矩形区域的数量。
4 1010 0101 1100 0011
0 7 0 1
1 |
|
第一行输入两个正整数,代表数组大小和询问次数。
第二行输入个整数
,其中如果输入的
为 0,那么说明
是未知的。
接下来的行,每行输入两个正整数
,代表一次询问。
输出行,每行输出两个正整数,代表所有元素之和的最小值和最大值。
3 2 1 0 3 1 2 4 4
5 6 8 8
只有第二个元素是未知的。
第一次询问,数组最小的和是 1+1+3=5,最大的和是 1+2+3=6。
第二次询问,显然数组的元素和必然为 8。
1 |
|
1 | int binarySearch(vector<int>& vec, int target) { |
1 | class Solution { |
1 | class Solution { |
硬搜
1 | class Solution { |

1 | int maxValueInVecSmallerThenLimit(vector<int>& vec, int limit) { |
1 | class Solution { |
1 | class Solution { |
nk的字符串切割成n个长度为k的子串,一次操作可以把一个子串替换成另一个字串,求如何替换,将所有字串都相同。n - cnt[i]NavController是中央导航 API。它会跟踪用户访问过的目的地,并允许用户在目的地之间移动。
NavController如果是NavHostFragment
1 | val navController = this.navController |