Skip to content

Commit 216219c

Browse files
committed
renew
1 parent 419794c commit 216219c

14 files changed

+202
-0
lines changed
File renamed without changes.

0001-two-sum/0001-two-sum.py

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#利用哈希表,空间换时间
2+
class Solution:
3+
def twoSum(self, nums: List[int], target: int) -> List[int]:
4+
n=len(nums)
5+
mapper={}
6+
for i in range(n):
7+
if (target-nums[i] in mapper):
8+
return [mapper[target-nums[i]],i]
9+
else:
10+
mapper[nums[i]]=i
11+
return []

0485-max-consecutive-ones.c

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
int findMaxConsecutiveOnes(int* nums, int numsSize) {
2+
int count = 0, max = 0;
3+
for(int i = 0; i < numsSize; i++) {
4+
if(nums[i] == 1) {
5+
count++;
6+
} else {
7+
count = 0;
8+
}
9+
max = fmax(max, count);
10+
}
11+
return max;
12+
}

0566-reshape-the-matrix.c

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
int** matrixReshape(int** nums, int numsSize, int* numsColSize, int r, int c, int* returnSize, int** returnColumnSizes) {
2+
if(r * c != numsSize * numsColSize[0]) {
3+
*returnSize = numsSize;
4+
*returnColumnSizes = numsColSize;
5+
return nums;
6+
}
7+
*returnSize = r;
8+
*returnColumnSizes = (int*)malloc(sizeof(int) * r);
9+
int **ret = (int**)malloc(sizeof(int*)*r);
10+
for(int i = 0; i < r; i++) {
11+
(*returnColumnSizes)[i] = c;
12+
ret[i] = (int*)malloc(sizeof(int) * c);
13+
}
14+
for(int i = 0; i < r; i++) {
15+
for(int j = 0; j < c; j++) {
16+
ret[i][j] = nums[(i * c + j) / numsColSize[0]][(i * c + j) % numsColSize[0]];
17+
}
18+
}
19+
return ret;
20+
}

0697-degree-of-an-array.c

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//uthash散列表
2+
typedef struct {
3+
int num;
4+
int count;
5+
int start;
6+
int end;
7+
UT_hash_handle hh;
8+
} numhash;
9+
10+
numhash *numh = NULL;
11+
12+
int findShortestSubArray(int* nums, int numsSize) {
13+
numhash *s = NULL;
14+
numhash *tmp = NULL;
15+
int max = 1;
16+
int size = numsSize;
17+
numh = NULL;
18+
for(int i = 0; i < numsSize; i++) {
19+
HASH_FIND_INT(numh, &nums[i], s);
20+
if(s == NULL) {
21+
s = (numhash*)malloc(sizeof(numhash));
22+
s->num = nums[i];
23+
s->count = 1;
24+
s->start = i;
25+
s->end = i;
26+
HASH_ADD_INT(numh, num, s);
27+
} else {
28+
s->count++;
29+
s->end = i;
30+
max = fmax(max, s->count);
31+
}
32+
}
33+
HASH_ITER(hh, numh, s, tmp) {
34+
if(s->count == max) {
35+
size = fmin(size, s->end - s->start + 1);
36+
}
37+
}
38+
return size;
39+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
int dominantIndex(int* nums, int numsSize) {
2+
int nummax = 0, numsec = 0, numindex = 0;
3+
for(int i = 0; i < numsSize; i++) {
4+
if(nums[i] >= nummax) {
5+
numsec = nummax;
6+
nummax = nums[i];
7+
numindex = i;
8+
} else if(nums[i] >= numsec) {
9+
numsec = nums[i];
10+
}
11+
}
12+
if(nummax >= numsec * 2) {
13+
return numindex;
14+
}
15+
return -1;
16+
}

0766-toeplitz-matrix.c

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
bool isToeplitzMatrix(int** matrix, int matrixSize, int* matrixColSize) {
2+
for(int i = 0; i < matrixSize - 1; i++) {
3+
for(int j = 0; j < matrixColSize[0] - 1; j++) {
4+
if(matrix[i][j] != matrix[i + 1][j + 1]) {
5+
return false;
6+
}
7+
}
8+
}
9+
return true;
10+
}

0867-transpose-matrix.c

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
int** transpose(int** matrix, int matrixSize, int* matrixColSize, int* returnSize, int** returnColumnSizes)
2+
{
3+
int m=matrixSize;
4+
int n=matrixColSize[0];
5+
int **ret=(int**)malloc(sizeof(int*)*n);
6+
*returnColumnSizes=(int*)malloc(sizeof(int)*n);
7+
8+
for(int i=0; i<n; i++)
9+
{
10+
ret[i]=(int*)malloc(sizeof(int*)*m);
11+
(*returnColumnSizes)[i]=m;
12+
for(int j=0; j<m; j++)
13+
{
14+
ret[i][j]=matrix[j][i];
15+
}
16+
}
17+
*returnSize=n;
18+
return ret;
19+
}

1004-max-consecutive-ones-iii.c

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//滑动窗口
2+
int longestOnes(int* A, int ASize, int K) {
3+
int l = 0, r = 0;
4+
int count = 0, zero = 0;
5+
while(r < ASize) {
6+
if(A[r++] == 0) {
7+
zero++;
8+
}
9+
while(zero > K) {
10+
if(A[l] == 0) {
11+
zero--;
12+
}
13+
l++;
14+
}
15+
count = fmax(count, r - l);
16+
}
17+
return count;
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
int* smallerNumbersThanCurrent(int* nums, int numsSize, int* returnSize) {
2+
int *ret = (int*)malloc(sizeof(int) * numsSize);
3+
int count[101] = {0};
4+
for(int i = 0; i < numsSize; i++) {
5+
count[nums[i]]++;
6+
}
7+
for(int i = 1; i < 101; i++) {
8+
count[i] += count[i - 1];
9+
}
10+
for(int i = 0; i < numsSize; i++) {
11+
ret[i] = nums[i] == 0 ? 0 : count[nums[i] - 1];
12+
}
13+
*returnSize = numsSize;
14+
return ret;
15+
}

1480-running-sum-of-1d-array.c

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
int* runningSum(int* nums, int numsSize, int* returnSize) {
2+
int *num = (int*)malloc(sizeof(int) * numsSize);
3+
int sum = 0;
4+
*returnSize = numsSize;
5+
for(int i = 0; i < numsSize; i++) {
6+
num[i] = sum + nums[i];
7+
sum = num[i];
8+
}
9+
return num;
10+
}

1572-matrix-diagonal-sum.c

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
int diagonalSum(int** mat, int matSize, int* matColSize) {
2+
if(mat == NULL) {
3+
return 0;
4+
}
5+
int sum = 0;
6+
for(int i = 0; i < matSize; i++) {
7+
sum += mat[i][i];
8+
sum += mat[i][matSize - i - 1];
9+
}
10+
return matSize % 2 == 0 ? sum : sum - mat[matSize / 2][matSize / 2];
11+
}

1732-find-the-highest-altitude.c

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
int largestAltitude(int* gain, int gainSize) {
2+
int ret = 0, sum = 0;;
3+
for(int i = 0; i < gainSize; i++) {
4+
sum += gain[i];
5+
ret = fmax(ret, sum);
6+
}
7+
return ret;
8+
}

1748-sum-of-unique-elements.c

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
int sumOfUnique(int* nums, int numsSize) {
2+
int count[101] = {0};
3+
int sum = 0;
4+
for(int i = 0; i < numsSize; i++) {
5+
count[nums[i]]++;
6+
}
7+
for(int i = 0; i < 101; i++) {
8+
if(count[i] == 1) {
9+
sum += i;
10+
}
11+
}
12+
return sum;
13+
}

0 commit comments

Comments
 (0)