题解 | #牛的品种排序II#

牛的品种排序II

https://www.nowcoder.com/practice/43e49fbb98b4497ba46e185918188b1c

考察的知识点:数组、双指针;

解答方法分析:

  1. 定义三个指针,leftcurright,分别代表下一个该放置黑牛、牛和黄牛的位置。
  2. 初始化left为0,right为数组最后一个位置。
  3. 通过遍历cur指针,根据当前遍历到的牛的类进行判断和操作。
  4. 如果是黑牛,将当前牛与left指向的位置交换,并将leftcur针都向右移动步。
  5. 如果是白牛,直将cur指针向右移动一步。
  6. 如果是黄牛,将当前牛与right指向的位置交换,并将right指针向左移动一步。
  7. 重复步骤3~6直到cur指针遍历完所有牛的种类。
  8. 返回过排序后的牛。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param cows int整型vector
     * @return int整型vector
     */
    vector<int> sortCows(vector<int>& cows) {
        int n = cows.size();
        int left = 0;
        int right = n - 1;
        int cur = 0;
        while (cur <= right) {
            if (cows[cur] == 0) {
                swap(cows[left], cows[cur]);
                          left++;
                          cur++;
            } else if (cows[cur] == 1) {
                cur++;
            } else {
                swap(cows[right], cows[cur]);
                right--;
            }
        }

        return cows;
    }
};

全部评论

相关推荐

今天 10:31
门头沟学院 Java
求问各位大佬,笔试都考点啥
投递科大讯飞等公司10个岗位
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务