zoukankan      html  css  js  c++  java
  • [思维]牛客编程巅峰赛S1第6场

    -----> C思路没错,下标写错了,recheck is necessary

    A 简单题

    class Solution {
    public:
        /**
         * 位移后二进制串的十进制值
         * @param str string字符串 二进制字符串
         * @param k int整型 循环位移次数
         * @return long长整型
         */
        long long rotateRight(string str, int k) {
            // write code here
            long long ret = 0;
            for(int i = str.length() - k; i < str.length(); ++i) {
                ret = ret * 2 + (str[i] - '0');
            }
            for(int i = 0; i < str.length() - k; ++i) {
                ret = ret * 2 + (str[i] - '0');
            }
            return ret;
        }
    };

    B 简单思维,用SET收敛非奇即可

    class Solution {
    public:
        /**
         * 返回一个数,代表让这些数都变成奇数的最少的操作次数
         * @param n int整型 代表一共有多少数
         * @param a int整型vector 代表n个数字的值
         * @return int整型
         */
        int solve(int n, vector<int>& a) {
            // write code here
            set <int> ST;
            for(auto x : a) {
                if(x % 2 == 0) {
                    ST.insert(x);
                }
            }
            int ret = 0;
            while(!ST.empty()) {
                auto x = --ST.end();
                ++ret;
                if ( (*x) >> 1 & 1) {
                    ST.erase(x);
                    continue;
                } else {
                    ST.erase(x);
                    ST.insert((*x) >> 1);
                }
            }
            return ret;
        }
    };

    C  简单构造,排反序后交叉排列即可

    class Solution {
    public:
        /**
         * ​返回按照这些花排成一个圆的序列中最小的“丑陋度”
         * @param n int整型 花的数量
         * @param array int整型vector 花的高度数组
         * @return int整型
         */
        int solve(int n, vector<int>& arr) {
            // write code here
            sort(arr.rbegin(), arr.rend());
            deque<int> dq;
            for(int i = 0; i < arr.size(); ++i) {
                if(i & 1) {
                    dq.push_back(arr[i]);
                } else {
                    dq.push_front(arr[i]);
                }
            }
            int ans = 0;
            for(int i = 1; i < n; ++i) {
                ans = max(ans, std::abs(dq[i] - dq[i - 1]));
            }
            ans = max(ans, std::abs(dq[0] - dq[n - 1]));
            return ans;
        }
    };
  • 相关阅读:
    android自定义控件onLayout方法
    android自定义控件onMeasure方法
    activity的四种启动模式详细分析
    android屏幕适配的全攻略2--支持手机各种屏幕密度dpi
    android屏幕适配的全攻略3-动态获取手机屏幕宽高及动态设置控件宽高
    DIV滚动条
    .NET面试题6
    .NET面试题5
    .NET面试题4
    .NET面试题2
  • 原文地址:https://www.cnblogs.com/zeolim/p/13378740.html
Copyright © 2011-2022 走看看