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

牛的品种排序I

https://www.nowcoder.com/practice/e3864ed7689d460c9e2da77e1c866dce

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

解答方法分析:

  1. 定义两个指针leftright,分别指向数组的第一个位置和最后一个位置。
  2. left小于right时,进入循环:在内部的while循环中,先找到不是黑牛的位置,即将left向右移动直到找到值为1的元素。接着,在另一个内部的while循环中,找到不是白牛的位置,即将right向左移动直找到值为0的素。如果仍然小于right,则交换left和right所指向元素,将黑牛和白牛位置进行交换。
  3. 循环结束后,数组中相同品种的牛已经放在了一起,并按照黑牛和白牛的顺序排列。
  4. 返回经过排列后的牛的数组。

所用编程语言: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;
        while (left < right) {
            while (left < right && cows[left] == 0) {
                left++;
            }
            while (left < right && cows[right] == 1) {
                right--;
            }
            if (left < right) {
                swap(cows[left], cows[right]);
            }
        }
        return cows;
    }
};

全部评论

相关推荐

07-18 15:02
门头沟学院 Java
刚打开网申页面就不想填了,还是不要为难自己了
poppinzhan...:多益老行业毒瘤了,碰到徐波这种恶心的烂人,去了也是受罪。
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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