LeetCode 902. Numbers At Most N Given Digit Set
应该是常数 N的位数时间级别
我的这个方法超时很严重。。。但是特此记录 费劲巴拉写的。。。
超时:
int atMostNGivenDigitSet(char** D, int DSize, int N) { int *array = (int *)malloc(sizeof(int) * 10); for (int i = 0; i < 10; i ++) array[i] = 0; for (int j = 1; j < 10; j ++) { if (j - 1 < DSize) { char cc = D[j - 1][0]; int c = cc - 48; array[c] = c; } //printf("\n%d",array[j]); } int totalSum = 0; for (int i = 1; i <= N; i ++) { long sum = 0; int num = 0; int x = i; int isFlag = 1; while ( x!= 0) { isFlag = 0; num = x % 10; //末尾数字 sum = sum * 10;//进位 sum += num; x = x / 10; if (array[num] == 0) { isFlag = 1; break; } } if (isFlag == 0) { totalSum ++; } } free(array); return totalSum; } int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!\n"); //[-2,-1] ---> -1 char *s[] = {"1","3","5","7"}; int maxNum = atMostNGivenDigitSet(s, 4, 100); printf("\n%d\n",maxNum); } return 0; }
posted on 2018-09-09 15:04 ACM_Someone like you 阅读(262) 评论(0) 编辑 收藏 举报