小工具知识网

当前位置: 首页 > 行业知识 > 【独家OD2023C卷真题】20天拿下华为OD笔试【单调栈】2023C-回转寿司【欧弟算法】全网注释最详细分类最全的华为OD真题题解

行业知识

【独家OD2023C卷真题】20天拿下华为OD笔试【单调栈】2023C-回转寿司【欧弟算法】全网注释最详细分类最全的华为OD真题题解

2026-11-05 01:18:09 来源:互联网转载

文章目录

  • 题目描述与示例
    • 题目描述
    • 输入描述
    • 输出描述
    • 示例一
        • 输入
        • 输出
        • 示例二
            • 输入
            • 输出
            • 解题思路
            • 代码
              • 解法一:正序遍历写法
                • python
                • java
                • cpp
                • 解法二:逆序遍历写法
                  • python
                  • java
                  • cpp
                  • 时空复杂度
                  • 华为OD���法/大厂面试高频题算法练习冲刺训练

                    题目描述与示例

                    题目描述

                    寿司店周年庆,正在举办优惠活动回馈新老客户寿司转盘上总共有n盘寿司,prices[i] 是第 i 盘寿司的价格,如果客户选择了第 i盘寿司,寿司店免费赠送客户距离第 i 盘寿司最近的下一盘寿司 j,前提是prices[j]

                    ()

                    输入描述

                    输入的每一个数字代表每盘寿司的价格,每盘寿司的价格之间使用空格分隔 寿司的盘数 n范围为: 1 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String[] input = scanner.nextLine().split(" "); int n = input.length; int[] nums = new int[n]; for (int i = 0; i

                    cpp

                    #include #include #include #include using namespace std;int main() {    string input;    getline(cin, input);    stringstream ss(input);    vector nums;    int num;    while (ss >> num) {        nums.push_back(num);    }    int n = nums.size();    stack st;    vector ans(nums.begin(), nums.end());    for (int i = 0; i  num) {            int topIdx = st.top();            st.pop();            ans[topIdx] = num + nums[topIdx];        }        st.push(idx);    }    for (int i = 0; i  

                    cpp

                    #include #include #include #include using namespace std;int main() {    string input;    getline(cin, input);    stringstream ss(input);    vector nums;    int num;    while (ss >> num) {        nums.push_back(num);    }    int n = nums.size();    stack stk;    vector ans = nums;    for (int i = 2 * n - 1; i >= 0; --i) {        int idx = i % n;        int num = nums[idx];        while (!stk.empty() && nums[stk.top()] >= num) {            stk.pop();        }        if (!stk.empty()) {            ans[idx] = nums[stk.top()] + nums[idx];        }        stk.push(idx);    }    for (int i = 0; i 

上一篇:人脸识别4:Android InsightFace实现人脸识别Face Recognition(含源码)

下一篇:宝塔面板域名密码查看攻略,轻松掌握查看方法!