【C语言Coding】第二十七天
原创
©著作权归作者所有:来自51CTO博客作者小样小响的原创作品,请联系作者获取转载授权,否则将追究法律责任
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* buildArray(int* nums, int numsSize, int* returnSize){
*returnSize =numsSize;
int* p = (int*)malloc(sizeof(int)*numsSize);
for(int i=0;i<numsSize;i++){
p[i] = nums[nums[i]];
}
return p;
}
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* createTargetArray(int* nums, int numsSize, int* index, int indexSize, int* returnSize){
int* arr = (int*)malloc(sizeof(int)*indexSize);
for(int i=0;i<indexSize;i++){
arr[i] = INT_MIN;
}
*returnSize = indexSize;
int i,j;
for(i=0;i<indexSize;i++){
int cur = index[i];
if(arr[ cur ] == INT_MIN){ // 当位置上没有元素时
arr[ cur ] = nums[i];
}else{ // 当位置上有元素时,进行右移
for(j=indexSize-1;j>=cur+1;j--){
arr[j] = arr[j-1];
}
arr[cur] = nums[i];
}
}
return arr;
}
typedef struct {
int number[3];
} ParkingSystem;
ParkingSystem* parkingSystemCreate(int big, int medium, int small) {
ParkingSystem* PS = (ParkingSystem*)malloc(sizeof(ParkingSystem));
PS->number[0] = big;
PS->number[1] = medium;
PS->number[2] = small;
return PS;
}
bool parkingSystemAddCar(ParkingSystem* obj, int carType) {
if(obj->number[carType-1] == 0) {
return false;
}
obj->number[carType-1]--;
return true;
}
void parkingSystemFree(ParkingSystem* obj) {
free(obj);
}
/**
* Your ParkingSystem struct will be instantiated and called as such:
* ParkingSystem* obj = parkingSystemCreate(big, medium, small);
* bool param_1 = parkingSystemAddCar(obj, carType);
* parkingSystemFree(obj);
*/
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* rearrangeArray(int* nums, int numsSize, int* returnSize){
int* arr = (int*)malloc(sizeof(int)*numsSize);
int ou = 0;
int ji = 1;
for(int i=0;i<numsSize;i++){
if(nums[i] > 0){
arr[ou] = nums[i];
ou += 2;
}else{
arr[ji] = nums[i];
ji += 2;
}
}
*returnSize = numsSize;
return arr;
}
int triangularSum(int* nums, int numsSize){
for(int i=0;i<numsSize;i++){
for(int j=0;j<numsSize-i-1;j++){
nums[j] = (nums[j] + nums[j+1])%10;
}
}
return nums[0];
}