Algorithm
题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输入
[1,2,4,7,11,15],15
返回值
[4,11]
代码
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> list = new ArrayList<>();
if(array == null || array.length < 2){
return list;
}
int size = array.length;
int num1 = array[0];
int num2 = array[size - 1];
for(int i = 0; i < size; i++){
for(int j = size - 1; j >= 0; j--){
if((array[i]+array[j] == sum) && (num1+num2 == sum)){
if(array[i]*array[j]< num1*num2){
num1 = array[i];
num2 = array[j];
break;
}
}else if ((array[i]+array[j] == sum) && (num1+num2 != sum)){
num1 = array[i];
num2 = array[j];
break;
}
}
}
if(num1 + num2 ==sum){
list.add(num1);
list.add(num2);
}
return list;
}
}
Review
https://medium.com/cma-thinker/go-on-a-road-trip-to-the-southwest-9286987fd6fb
介绍了作者疫情期间,通过参观了Gustave Baumann的作品展览,踏上了前往美国西南部的"旅途"
Tips
1、Android 7以上机型进行裁剪,输出uri使用content协议,抛出Permission Denial错误
使用以下代码也无法解决
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_READ_URI_PERMISSION)
原因是addFlags只为intent访问输入的uri提供了权限,而没有为输出的uri添加权限
解决方案:
(1)使用grantUriPermission为输出uri授予权限
(2)将输出uri替换为File协议,而不是content协议(实践得出,原因目前还不清楚)
Share
https://ljd1996.github.io/2020/04/23/Javassist%E7%94%A8%E6%B3%95/
介绍了javassist的一些基本用法