public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
int result = array[0];
int a [] = new int[array.length];
a[0] = array[0];
for(int i = 1;i < array.length;i++){
a[i] = a[i - 1] + array[i] > array[i] ? a[i - 1] + array[i] : array[i];//记录目前的累加和
result = result > a[i] ? result : a[i];
}
return result;
}
}
原理:
public class Solution {
public int NumberOf1Between1AndN_Solution(int n) {
if(n <= 0){
return 0;
}
int count = 0;
for(int i = 1;i <= n;i *= 10){
long diviver = i * 10;
count += (n / diviver) * i + Math.min(Math.max(n % diviver - i + 1, 0),i);
}
return count;
}
}