Menu
CoddyTech

Luyện tập #2

Bài học 11 trên 14 trong khóa học Bảng băm, loạt cấu trúc dữ liệu #4 của Coddy.

challenge icon

Thử thách

Dễ

Viết một hàm twoSum nhận một mảng số nguyên arr và một số nguyên target, rồi trả về chỉ số của hai phần tử có giá trị cộng lại bằng target.

Trả về các chỉ số theo thứ tự tăng dần: [smaller_index, larger_index]. Mỗi đầu vào có đúng một cặp hợp lệ.

Bạn phải sử dụng lớp HashMap được cung cấp trong hashmap.<ext>, không dùng các cấu trúc có sẵn của ngôn ngữ như tập hợp, từ điển hoặc bản đồ.

Tự làm thử

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "solution.h"

int main() {
    char line[8192];
    char tline[64];
    if (!fgets(line, sizeof(line), stdin)) line[0] = '\0';
    if (!fgets(tline, sizeof(tline), stdin)) tline[0] = '\0';
    int arr[4096];
    int n = 0;
    char* tok = strtok(line, " \t\r\n");
    while (tok) { arr[n++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
    int target = atoi(tline);
    int rs = 0;
    int* r = twoSum(arr, n, target, &rs);
    printf("%d %d\n", r[0], r[1]);
    return 0;
}

Tất cả bài học trong Bảng băm, loạt cấu trúc dữ liệu #4

Tự luyện tập: Trình biên dịch C online