141. 最後的元素

I'm a slow walker, but I never walk backwards.

Task Description
最後的元素
給定長度為 n 的正整數陣列 A。以下是演算法的流程:
每一輪,從 A 中選出兩個最大的元素 x 和 y,其中 x≤y。
如果 x=y,則同時從 A 中刪除;
如果 x≠y,則將 x 從 A 中刪除,並用 y-x的值取代原本的 y,
最後會剩下至多一個元素,請將此元素印出,若 A 中無任何元素留下則印出0。

請使用此函數原型 int lastStoneWeight(int* stones, int stonesSize)、void insert(int* stone, int stoneSize, int value)、int extractMax(int* stone, int stoneSize)完成。

int lastStoneWeight(int* stones, int stonesSize) : 題目演算法
void insert(int* stone, int stoneSize, int value) : 用y-x取代原本的y
int extractMax(int* stone, int stoneSize) : 取最大元素

Hint

LastElement.h

打上 function header 以及相關的設定。

int extractMax(int* stone, int stoneSize);
void insert(int* stone, int stoneSize, int value);
int lastStoneWeight(int* stones, int stonesSize);

LastElement.c

撰寫程式碼後對應上傳。

#include "LastElement.h"
int extractMax(int* stone, int stoneSize) {
    //add your code
}
 
void insert(int* stone, int stoneSize, int value) {
    //add your code
}
 
int lastStoneWeight(int* stones, int stonesSize) {
    //add your code
}

main.c

這個檔案無法更改也無須上傳。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include "LastElement.h"
 
int main() {
    int n = 0;
    int ans;
    scanf("%d", &n);
    int* a = (int*)malloc(n * sizeof(int));
 
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    ans = lastStoneWeight(a, n);
    printf("%d", ans);
    free(a);
    return 0;
}

Input Format
第一列輸入為 n,第二列輸入為 A 中的 n 個元素值。
Note: 0<n≤100、0≤A[i]≤100
Sample Input

1
2
6
2 7 4 1 8 1

Sample Output

1
1

Sample Input

1
2
10
1 1 1 1 1 1 1 1 1 1

Sample Output

1
0

Submit

Login

Testdata Set

Download Testdata