华为OD机试 - 奇偶三数之和(Python/JS/C/C++ 新系统 100分)

【华为OD】2024年华为OD机试C卷、D卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript 2024年华为OD机试C卷真题题集题库,有2种分数的题目列表分别是100分的列表、200分的列表从2023年11月开始,华为OD题目切换到C卷,基本上大概率会使用半年左右,要在2024年5月之前把这些题目都好好练习一下,可以得到很好的收获,基本上都是出的原题,提前恭喜大家都上岸。目前通过大大提供的真题练习,已经有上百人成功上岸了,而且大大还是一个老师,通过大大指导进入华为OD的学生已经有上千人了。 2024年5月之前,碰到原题的概率是98%以上。 阅读详情

在这里插入图片描述

华为OD机试 新系统 统一考试题库清单(持续收录中)以及考点说明(Python/JS/C/C++)。

专栏导读

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。

一、题目描述

给定一个包含 n n n 个整数的数组 nums 和一个整数 target,请从数组中找出所有 不重复 的三元组 [nums[i], nums[j], nums[k]],满足以下两个条件:

  1. 和为目标:

    n u m s [ i ] + n u m s [ j ] + n u m s [ k ] = t a r g e t nums[i] + nums[j] + nums[k] = target nums[i]+nums[j]+nums[k]=target

  2. 奇偶性约束:

    三个元素中 至少有两个 是奇数。

    返回所有满足条件的不重复三元组。

    提示:

  • 3 ≤ n u m s . l e n g t h ≤ 3000 3 \le nums.length \le 3000 3≤nums.length≤3000

  • − 10 5 ≤ n u m s [ i ] ≤ 10 5 -10^5 \le nums[i] \le 10^5 −105≤nums[i]≤105

    补充说明

    返回值输出格式:每个子数组内部的元素按数值升序排列,所有子数组之间按字典序升序排列(即先比较第一个元素,若相同再比较第二个,以此类推)。

    示例:[[-1,-1,2],[-1,0,1]]

二、输入描述

输入为一个数组 nums 和一个目标整数 target。

三、输出描述

输出所有满足条件的不重复三元组。

四、测试用例

测试用例1:

1、输入

-1,0,1,2,-1,-4
0

2、输出

-1,-1,2
-1,0,1

3、说明

两个三元组都满足和为 0,并且至少两个元素为奇数。

测试用例2:

1、输入

1,2,3,4,5
9

2、输出

1,3,5

3、说明

2,3,4 虽然和为 9,但只有 3 一个奇数,因此排除。

五、解题思路

本题本质上是在经典“三数之和”问题上增加了两个要求:三元组不能重复,并且三个元素中至少有两个奇数。

首先对数组进行升序排序。排序有三个作用:第一,每个找到的三元组天然满足内部元素升序;第二,相同数字会排列在一起,可以通过跳过重复元素完成去重,不需要额外使用 HashSet;第三,排序后可以使用双指针,将原本三层循环的 O(n³) 时间复杂度优化为 O(n²)。

具体做法是枚举三元组中的第一个元素 nums[i]。如果 nums[i] 与前一个元素相同,则直接跳过,避免产生重复答案。随后令 left=i+1、right=n-1,计算 nums[i]+nums[left]+nums[right]。如果和小于 target,说明需要增大总和,因此 left++;如果和大于 target,则 right–;如果正好等于 target,再统计三个元素中的奇数数量。奇数个数不少于 2 时,将当前三元组加入结果。

当找到一个和等于 target 的组合后,无论其是否通过奇偶性检查,都需要跳过 left 和 right 位置上的重复值,因为相同数值再次组合只会得到完全相同的三元组。

此外,因为数组已经排序,可以利用当前 nums[i] 对应的最小三数和与最大三数和进行剪枝。如果最小和已经大于 target,后续 nums[i] 更大,可以直接结束;如果最大和仍小于 target,则当前 nums[i] 不可能产生答案,可以直接进入下一轮。

由于 i 按升序遍历,left 也按升序移动,因此最终结果天然满足三元组之间的字典序要求。整体时间复杂度为 O(n²),可以满足 n≤3000 的数据规模;结果数组之外主要使用常数级双指针空间。

六、Python算法源码

def find_triples(nums, target):
    result = []

    # 先排序:
    # 1. 可以使用双指针,将复杂度降为 O(n^2)
    # 2. 相同数字会相邻,方便直接完成去重
    # 3. 最终三元组内部天然按照升序排列
    nums.sort()

    n = len(nums)

    for i in range(n - 2):

        # 固定的第一个元素去重。
        if i > 0 and nums[i] == nums[i - 1]:
            continue

        # 最小可能三数和已经大于 target,
        # 后面的第一个元素只会更大,可以直接结束。
        if nums[i] + nums[i + 1] + nums[i + 2] > target:
            break

        # 最大可能三数和仍然小于 target,
        # 当前 nums[i] 不可能产生答案。
        if nums[i] + nums[n - 2] + nums[n - 1] < target:
            continue

        left = i + 1
        right = n - 1

        while left < right:
            total = nums[i] + nums[left] + nums[right]

            if total < target:
                left += 1

            elif total > target:
                right -= 1

            else:
                # 三数之和满足 target 后,再统计奇数数量。
                # 使用 != 0 可以正确处理负奇数。
                odd_count = sum(
                    x % 2 != 0
                    for x in (nums[i], nums[left], nums[right])
                )

                if odd_count >= 2:
                    result.append(
                        (nums[i], nums[left], nums[right])
                    )

                # 当前数值组合已经处理过,
                # 跳过左右两侧的重复数字,防止产生重复答案。
                left_value = nums[left]
                right_value = nums[right]

                while left < right and nums[left] == left_value:
                    left += 1

                while left < right and nums[right] == right_value:
                    right -= 1

    return result


def main():
    # 同时兼容:
    # 1,2,3
    # [1,2,3]
    line = input().strip().replace('[', '').replace(']', '')
    target = int(input().strip())

    nums = [
        int(x.strip())
        for x in line.split(',')
    ]

    result = find_triples(nums, target)

    for a, b, c in result:
        print(f"{a},{b},{c}")


if __name__ == "__main__":
    main()

七、JavaScript算法源码

const fs = require('fs');

function findTriples(nums, target) {
    const result = [];

    /*
     * JavaScript 默认 sort() 会按照字符串进行排序,
     * 因此必须传入 (a, b) => a - b。
     *
     * 排序后使用双指针,可以将复杂度优化到 O(n^2),
     * 同时方便跳过重复值。
     */
    nums.sort((a, b) => a - b);

    const n = nums.length;

    for (let i = 0; i < n - 2; i++) {

        // 第一个元素去重。
        if (i > 0 && nums[i] === nums[i - 1]) {
            continue;
        }

        // 当前能得到的最小三数和已经过大,
        // 后续 nums[i] 更大,因此可以直接结束。
        if (nums[i] + nums[i + 1] + nums[i + 2] > target) {
            break;
        }

        // 当前能得到的最大三数和仍然过小,
        // 当前固定元素不可能得到答案。
        if (nums[i] + nums[n - 2] + nums[n - 1] < target) {
            continue;
        }

        let left = i + 1;
        let right = n - 1;

        while (left < right) {
            const sum =
                nums[i] +
                nums[left] +
                nums[right];

            if (sum < target) {
                left++;
            } else if (sum > target) {
                right--;
            } else {

                /*
                 * 和满足 target 后检查奇偶约束。
                 * JavaScript 中负奇数 % 2 的结果可能为 -1,
                 * 所以应该使用 !== 0,而不是 === 1。
                 */
                let oddCount = 0;

                if (nums[i] % 2 !== 0) {
                    oddCount++;
                }

                if (nums[left] % 2 !== 0) {
                    oddCount++;
                }

                if (nums[right] % 2 !== 0) {
                    oddCount++;
                }

                if (oddCount >= 2) {
                    result.push([
                        nums[i],
                        nums[left],
                        nums[right]
                    ]);
                }

                // 无论是否满足奇偶条件,
                // 当前相同数值组合都不需要再次检查。
                const leftValue = nums[left];
                const rightValue = nums[right];

                while (
                    left < right &&
                    nums[left] === leftValue
                ) {
                    left++;
                }

                while (
                    left < right &&
                    nums[right] === rightValue
                ) {
                    right--;
                }
            }
        }
    }

    return result;
}


// 读取控制台全部输入。
const lines = fs.readFileSync(0, 'utf8')
    .split(/\r?\n/)
    .filter(line => line.trim().length > 0);

if (lines.length >= 2) {

    // 同时兼容 1,2,3 和 [1,2,3]
    const arrayLine = lines[0]
        .trim()
        .replace(/\[/g, '')
        .replace(/\]/g, '');

    const target = Number(lines[1].trim());

    const nums = arrayLine
        .split(',')
        .map(x => Number(x.trim()));

    const result = findTriples(nums, target);

    for (const triple of result) {
        console.log(triple.join(','));
    }
}

八、C算法源码

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

#define MAX_N 3005
#define MAX_LINE 40000

/*
 * qsort 使用的整数比较函数。
 * 不直接 return x - y,可以避免一般情况下减法溢出的风险。
 */
int compare_int(const void *a, const void *b) {
    int x = *(const int *)a;
    int y = *(const int *)b;

    return (x > y) - (x < y);
}

int main(void) {
    char line[MAX_LINE];

    // 题目 nums.length <= 3000,
    // 因此申请 3005 个位置即可。
    int nums[MAX_N];
    int n = 0;

    if (fgets(line, sizeof(line), stdin) == NULL) {
        return 0;
    }

    /*
     * 兼容:
     * 1,2,3
     * [1,2,3]
     *
     * 将方括号替换为空格,再按照逗号切分。
     */
    for (int i = 0; line[i] != '\0'; i++) {
        if (line[i] == '[' || line[i] == ']') {
            line[i] = ' ';
        }
    }

    char *token = strtok(line, ",");

    while (token != NULL && n < MAX_N) {
        nums[n++] = (int)strtol(token, NULL, 10);
        token = strtok(NULL, ",");
    }

    char targetLine[100];

    if (fgets(targetLine, sizeof(targetLine), stdin) == NULL) {
        return 0;
    }

    long long target = strtoll(targetLine, NULL, 10);

    /*
     * 排序后使用:
     * 固定第一个数字 + 左右双指针。
     *
     * 时间复杂度从 O(n^3) 优化为 O(n^2),
     * 同时方便跳过重复数字。
     */
    qsort(nums, n, sizeof(int), compare_int);

    for (int i = 0; i < n - 2; i++) {

        // 固定元素去重。
        if (i > 0 && nums[i] == nums[i - 1]) {
            continue;
        }

        /*
         * 使用 long long 计算和,
         * 避免三个 int 相加时潜在的整型溢出。
         */
        long long minSum =
            (long long)nums[i] +
            nums[i + 1] +
            nums[i + 2];

        if (minSum > target) {
            break;
        }

        long long maxSum =
            (long long)nums[i] +
            nums[n - 2] +
            nums[n - 1];

        if (maxSum < target) {
            continue;
        }

        int left = i + 1;
        int right = n - 1;

        while (left < right) {

            long long sum =
                (long long)nums[i] +
                nums[left] +
                nums[right];

            if (sum < target) {
                left++;
            } else if (sum > target) {
                right--;
            } else {

                /*
                 * 和满足 target 后,再统计奇数数量。
                 *
                 * C 中负奇数取模可能得到 -1,
                 * 所以同样使用 % 2 != 0。
                 */
                int oddCount = 0;

                if (nums[i] % 2 != 0) {
                    oddCount++;
                }

                if (nums[left] % 2 != 0) {
                    oddCount++;
                }

                if (nums[right] % 2 != 0) {
                    oddCount++;
                }

                if (oddCount >= 2) {
                    printf(
                        "%d,%d,%d\n",
                        nums[i],
                        nums[left],
                        nums[right]
                    );
                }

                /*
                 * 当前数值组合已经处理完,
                 * 跳过重复的 left/right 数字。
                 */
                int leftValue = nums[left];
                int rightValue = nums[right];

                while (
                    left < right &&
                    nums[left] == leftValue
                ) {
                    left++;
                }

                while (
                    left < right &&
                    nums[right] == rightValue
                ) {
                    right--;
                }
            }
        }
    }

    return 0;
}

九、C++算法源码

#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>
#include <string>

using namespace std;

vector<vector<int>> findTriples(
        vector<int> nums,
        long long target) {

    vector<vector<int>> result;

    /*
     * 排序有三个目的:
     * 1. 使用双指针,将复杂度优化到 O(n^2)
     * 2. 相同元素相邻,方便去重
     * 3. 每个答案内部天然为升序
     */
    sort(nums.begin(), nums.end());

    int n = static_cast<int>(nums.size());

    for (int i = 0; i < n - 2; ++i) {

        // 固定的第一个数字去重。
        if (i > 0 && nums[i] == nums[i - 1]) {
            continue;
        }

        /*
         * 当前 nums[i] 能组成的最小和已经大于 target,
         * 后面的 nums[i] 只会更大,因此直接结束。
         */
        long long minSum =
            (long long)nums[i] +
            nums[i + 1] +
            nums[i + 2];

        if (minSum > target) {
            break;
        }

        /*
         * 当前 nums[i] 与最大的两个数字相加仍然小于 target,
         * 当前固定元素不可能产生答案。
         */
        long long maxSum =
            (long long)nums[i] +
            nums[n - 2] +
            nums[n - 1];

        if (maxSum < target) {
            continue;
        }

        int left = i + 1;
        int right = n - 1;

        while (left < right) {

            long long sum =
                (long long)nums[i] +
                nums[left] +
                nums[right];

            if (sum < target) {
                ++left;
            } else if (sum > target) {
                --right;
            } else {

                /*
                 * 三数和满足 target 后,
                 * 再检查三个数中是否至少存在两个奇数。
                 *
                 * 使用 % 2 != 0,
                 * 可以同时正确处理正奇数和负奇数。
                 */
                int oddCount = 0;

                if (nums[i] % 2 != 0) {
                    ++oddCount;
                }

                if (nums[left] % 2 != 0) {
                    ++oddCount;
                }

                if (nums[right] % 2 != 0) {
                    ++oddCount;
                }

                if (oddCount >= 2) {
                    result.push_back({
                        nums[i],
                        nums[left],
                        nums[right]
                    });
                }

                /*
                 * 当前左右数值只处理一次。
                 * 无论奇偶条件是否通过,都跳过相同值,
                 * 防止后续生成重复三元组。
                 */
                int leftValue = nums[left];
                int rightValue = nums[right];

                while (
                    left < right &&
                    nums[left] == leftValue
                ) {
                    ++left;
                }

                while (
                    left < right &&
                    nums[right] == rightValue
                ) {
                    --right;
                }
            }
        }
    }

    return result;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    string line;

    if (!getline(cin, line)) {
        return 0;
    }

    // 同时兼容 1,2,3 和 [1,2,3]。
    line.erase(
        remove(line.begin(), line.end(), '['),
        line.end()
    );

    line.erase(
        remove(line.begin(), line.end(), ']'),
        line.end()
    );

    vector<int> nums;

    string token;
    stringstream ss(line);

    while (getline(ss, token, ',')) {
        nums.push_back(stoi(token));
    }

    long long target;
    cin >> target;

    vector<vector<int>> result =
        findTriples(nums, target);

    for (const auto &triple : result) {
        cout
            << triple[0] << ','
            << triple[1] << ','
            << triple[2] << '\n';
    }

    return 0;
}


🏆下一篇:华为OD机试真题 - 简易内存池(Python/JS/C/C++ 新系统 200分)

🏆本文收录于,华为OD机试真题(Python/JS/C/C++)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。

在这里插入图片描述

2026华为OD机考新系统真题 + 双机位C卷 + 往年真题 - 题库目录分值说明 + 考点说明+在线OJ 2026年4月1日起,华为OD机试正式切换至新系统模式!采用力扣模式,无需自己写输入! 难度大幅度降低。正在备考华为OD机试的同学,优先刷新系统机试真题,可大幅提升通过率。 新系统考题考点与旧版一致,无需重新适应。本专栏所有算法题均配有详细思路解析,并提供C语言、JS、C++、Python、Go、Java多语言源码实现。订阅后私信即可开通专属OJ刷题权限,高效备考一次上岸! 阅读详情

相关推荐

华为OD机试 新系统 双机位C卷 往年真题 机考题库(持续收录中)以及算法考点详解(Python/JS/C/C++)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释发现新题目,随时更新。

学Java,找哪吒 5万+

华为OD机试真题——新学校选址(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

华为OD机试真题——新学校选址(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

专注分享技术、实用优质教程、资源 829

华为OD机试 新系统 双机位C卷 往年真题 机考题库(持续收录中)以及算法考点详解

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 7万+

华为OD机试 - 最长子字符串的长度(Python/JS/C/C++ 2024 E卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。给你一个字符串s,字符串s首尾相连组成一个环形,请你在环形中找出‘o’字符出现了偶数次最长子字符串的长度。输入一串小写字母组成的字符串。输出一个整数。abc3‘o’ 出现次数为 0(偶数),整个字符串符合要求,长度为 3。xox2字符串长度为 3

学Java,找哪吒 672

2026华为OD机试(Python)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,Python实现。

MISAYAONE的博客 28万+

2026华为OD机试(JavaScript)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,JavaScript实现。

MISAYAONE的博客 8万+

华为OD机试 - 环中最长子串 - 滑动窗口(Python/JS/C/C++ 2024 D卷 100分)

滑动窗口是一种算法技巧,通过在数组或序列上维持一个固定大小或可变大小的子区间,逐步移动窗口位置以高效解决涉及连续子数组或子序列的问题。

学Java,找哪吒 882

2026华为OD机试(JAVA&Go)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,Java实现。

MISAYAONE的博客 34万+

华为OD机试 - 最长子字符串的长度(二) (Python/JS/C/C++ 2024 D卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题。

学Java,找哪吒 962

华为od机试新系统真题-奇偶三数之和(C/C++/Py/Java/Js/Go)

华为OD机试 新系统真题【奇偶三数之和】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【奇偶三数之和】多语言题解。

qq_45776114的博客 786

2026华为OD机试(C++)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C++实现。

MISAYAONE的博客 20万+

【华为OD机试真题】65、高矮个子排队 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

题目描述 >现在有一队小朋友,他们高矮不同,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。 >  我们现在希望小朋友排队,以"高" "矮" "高" "矮" 顺序排列,每一个高位置的小朋友要比相邻的位置高或者相等;每个 "矮" 位置的小朋友要比相邻的位置矮或者相等; >  要求小朋友们移动的距离和最小,第一个从“高"位开始排,输出最小移动距离即可。 >  例如,在示范小队{5,3,1,2,3}中, {5, 1, 3, 2, 3}是排序结果。 > 

KJ.JK 2096

华为OD机试 - 羊、狼、农夫过河 - 逻辑分析(Python/JS/C/C++ 2025 A卷 100分)

华为OD机试 2025A卷题库疯狂收录中,刷题。

学Java,找哪吒 1341

【华为OD】2024年C、D卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript

华为OD真题,2024年C卷真题题集,有2种分数的题目列表,分别是100分的列表、200分的列表

十年以上编程经验的干货分享 4924

【2024华为OD机试C卷】397、最长子字符串的长度(二) | 机试真题+思路参考+代码解析(C语言、C++、Java、Py、JS)

题目描述 >给你一个字符串s,首位相连成一个环形,在环中找出 "o" 字符出现了偶数次最长子字符串的长度

KJ.JK 1803

7.1华为OD机试真题 新系统 - 奇偶三数之和 (Java/Py/C/C++/Js/Go)

7.1华为OD机试真题 新系统 - 奇偶三数之和 (Java/Py/C/C++/Js/Go)

算法大师! 443

华为OD机试 - 箱子之形摆放(Python/JS/C/C++ 2025 B卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。要求将一批箱子按从上到下以‘之’字形的顺序摆放在宽度为 n 的空地上,输出箱子的摆放位置,例如:箱子ABCDEFG,空地宽为3。摆放效果如下图: 则输出结果为:AFG BE CD一行字符串,通过空格分割两部分,前面str部分表示箱子的字符串由数

学Java,找哪吒 998

华为OD机试 - 高矮个子排队 - 滑动窗口(Python/JS/C/C++ 2025 C卷 100分)

例如,在示范小队{5,3,1,2,3}中,{5, 1, 3, 2, 3}是排序结果。{5, 2, 3, 1, 3} 虽然也满足“高”“矮”“高”“矮”顺序排列,但小朋友们的移动距离大,所以不是最优结果。我们现在希望小朋友排队,以“高”“矮”“高”“矮”顺序排列,每一个“高”位置的小朋友要比相邻的位置高或者相等;该算法采用了一种贪心的思路,通过遍历数组,根据当前位置的奇偶性进行交换判断,以满足“高”“矮”“高”“矮”的顺序排列。下标1(矮位):3 与1比较,3 > 1,交换后:[5, 1, 3, 2, 3]

学Java,找哪吒 1469
上一篇: 华为OD机试 - 奇偶三数之和(Java 新系统 100分)
下一篇: 华为OD机试 - 仓库盘点(Java 新系统 100分)
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2933原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值