华为OD机试-2024年C卷&D卷真题汇总(Java/Python/C++)

华为OD机试是很多程序员求职过程中需要面对的重要环节,尤其是在2024年,随着技术的发展和面试模式的多样化,考题逐渐趋向于算法与数据结构的结合,考察应聘者的编程能力和逻辑思维能力。本文将总结一些2024年C卷和D卷的真题,并给出相应的代码示例。

题目一:数组中的最长递增子序列

题目要求找到给定数组中的最长递增子序列的长度。这个问题可以通过动态规划来解决。

Python示例代码:

def length_of_lis(nums):
    if not nums:
        return 0

    dp = [1] * len(nums)

    for i in range(1, len(nums)):
        for j in range(i):
            if nums[i] > nums[j]:
                dp[i] = max(dp[i], dp[j] + 1)

    return max(dp)

# 测试
nums = [10, 9, 2, 5, 3, 7, 101, 18]
print(length_of_lis(nums))  # 输出: 4

题目二:字符串的最长公共前缀

给定一组字符串,找出它们的最长公共前缀。如果不存在公共前缀,返回空字符串。

Java示例代码:

public class LongestCommonPrefix {
    public String longestCommonPrefix(String[] strs) {
        if (strs.length == 0) return "";
        String prefix = strs[0];

        for (int i = 1; i < strs.length; i++) {
            while (strs[i].indexOf(prefix) != 0) {
                prefix = prefix.substring(0, prefix.length() - 1);
                if (prefix.isEmpty()) return "";
            }
        }
        return prefix;
    }

    public static void main(String[] args) {
        LongestCommonPrefix lcp = new LongestCommonPrefix();
        String[] strs = {"flower", "flow", "flight"};
        System.out.println(lcp.longestCommonPrefix(strs));  // 输出: "fl"
    }
}

题目三:二叉树的最大深度

给定一个二叉树,返回其最大深度。二叉树的深度是指从根节点到最远叶节点的最长路径上的节点数量。

C++示例代码:

#include <iostream>
using namespace std;

// 定义二叉树节点
struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

// 计算二叉树最大深度
int maxDepth(TreeNode* root) {
    if (!root) return 0;
    return max(maxDepth(root->left), maxDepth(root->right)) + 1;
}

int main() {
    // 构造二叉树
    TreeNode* root = new TreeNode(3);
    root->left = new TreeNode(9);
    root->right = new TreeNode(20);
    root->right->left = new TreeNode(15);
    root->right->right = new TreeNode(7);

    cout << maxDepth(root) << endl;  // 输出: 3
    return 0;
}

总结

以上是一些2024年华为OD机试C卷和D卷的真题示例以及相关的代码实现。这些问题涵盖了动态规划、字符串处理和树的深度遍历等核心编程技巧。建议面对这些题目时,考生不仅要理解算法的核心思想,还要练习代码的实现,以提高在真实环境中的解题能力。同时,熟悉Python、Java和C++三种语言的语法特点,能够帮助你根据具体情况选择最合适的语言进行解题。希望这些总结对各位同学有所帮助,祝大家在机试中取得优异成绩!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部