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

牛的品种排序II

https://www.nowcoder.com/practice/43e49fbb98b4497ba46e185918188b1c?tpId=354&tqId=10595834&ru=/exam/oj/ta&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D354

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param cows int整型一维数组 
     * @return int整型一维数组
     */
  /**
  方法一:计数排序适用于0-9这种,时间复杂度O(n)
  */
      public int[] sortCows(int[] cows) {
        int n = cows.length;
        int[] count = new int[3];

        // 统计每个品种的数量
        for (int i = 0; i < n; i++) {
            count[cows[i]]++;
        }

        // 重构原始牛群数组
        int index = 0;
        for (int i = 0; i < 3; i++) {
            while (count[i] > 0) {
                cows[index++] = i;
                count[i]--;
            }
        }

        return cows;
    }
  /**
  方法二:冒泡或者选择排序 时间复杂度O(n2)
  */
   public int[] sortCows (int[] cows) {
        for (int i = 0; i < cows.length; i++) {
            for (int j = i+1; j < cows.length; j++) {
                if(cows[i]>cows[j]){
                    int temp = cows[i];
                    cows[i] = cows[j];
                    cows[j] = temp;
                }
            }
        }
        return cows;
    }
}

本题知识点分析:

1.数组遍历

2.数组下标索引赋值

3.排序(八大排序任选即可)

本题解题思路分析:

1.计数排序应该是最方便的 先统计每个品种的数量,然后重构原始牛群数组即可

2.冒泡或者选择排序之类的,要O(N2)

看面试官要求时间复杂度,如果没要求,直接一个冒泡,不过现在考冒泡的公司应该没有了吧,计数排序还是要知道的。

本题使用编程语言: Java

如果对您有帮助的话,可以点个赞~

高频面试算法题解 文章被收录于专栏

高频面试算法题解,每天一小步,人生一大步,跟着一起刷起来!

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

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