视频推荐的算法 | MarsCode AI刷题的高效之处

109 阅读4分钟

本文分享在AI刷题的过程中,借助MarsCode工具完成代码编写的强大之处,可以很便捷的帮助我们在刷题过程中总结知识点和学习算法。

以下面的题目为示例。

问题描述

西瓜视频正在开发一个新功能,旨在将访问量达到80百分位数以上的视频展示在首页的推荐列表中。实现一个程序,计算给定数据中的80百分位数。

例如:假设有一个包含从1到100的整数数组,80百分位数的值为80,因为按升序排列后,第80%位置的数字就是80。

99 百分位数:假如有 N 个数据,将数据从小到大排列,99 百分位数是第 N99%位置处的数据(遇到小数时四舍五入获取整数)。一般计算逻辑是先排序,定位到 N99%的位置。返回该位置处的数据。同理,80 百分位数就是第 N*80%位置处的数据。


测试样例

样例1:

输入:data = "10,1,9,2,8,3,7,4,6,5"
输出:8

样例2:

输入:data = "1,0,8,7,3,9,12,6,4,15,17,2,14,5,10,11,19,13,16,18"
输出:15

样例3:

输入:data = "5,3,9,1,7"
输出:7

问题分析

这题分析完就会发现题目很简单,只需要对数组进行升序排序后,找到第80%位置的数据输出就可以了。考察的就是排序算法。

完整代码

import java.util.Arrays;

public class Main {
    public static int solution(String data) {
        String[] strings = data.split(",");
        int[] nums = new int[strings.length];
        for (int i = 0; i < strings.length; i++) {
            nums[i] = Integer.parseInt(strings[i]);
        }
        Arrays.sort(nums);

        return nums[(int) (nums.length * 0.8 + 0.5) - 1];
    }

    public static void main(String[] args) {
        // You can add more test cases here
        System.out.println(solution("10,1,9,2,8,3,7,4,6,5") == 8);
        System.out.println(solution("1,0,8,7,3,9,12,6,4,15,17,2,14,5,10,11,19,13,16,18") == 15);
        System.out.println(solution(
                "76,100,5,99,16,45,18,3,81,65,102,98,36,4,2,7,22,66,112,97,68,82,37,90,61,73,107,104,79,14,52,83,27,35,93,21,118,120,33,6,19,85,49,44,69,53,67,110,47,91,17,55,80,78,119,15,11,70,103,32,9,40,114,26,25,87,74,1,30,54,38,50,8,34,28,20,24,105,106,31,92,59,116,42,111,57,95,115,96,108,10,89,23,62,29,109,56,58,63,41,77,84,64,75,72,117,101,60,48,94,46,39,43,88,12,113,13,51,86,71") == 96);
    }
}

AI刷题过程

在刷题过程中,更重要的是对算法的学习,因此在写这一题时,我们可以顺便对算法中的常见排序算法进行学习和复现,而AI刷题的优势就体现在这里。

常见的排序算法包括:

  1. 冒泡排序
  2. 快速排序
  3. 直接插入排序
  4. 归并排序
  5. 选择排序
  6. 堆排序

image.png 可以看到AI的自动生成注释功能能够直接将常见的算法列出来。我们尝试复现每一种算法。

冒泡排序

只需要写一个冒泡排序的注释,MarCode就能自动帮助我们生成冒泡排序的代码。 image.png

快速排序

快速排序是一种高效的排序算法,它使用分治策略来对一个数组进行排序。写一个快速排序的注释,即使是快速排序的递归函数也能自动生成,并且没有报错。 image.png

image.png

如果代码有不理解的地方,直接点击左侧的Marcode解读器,右侧就能给出程序的详细解读。

image.png

堆排序

除了代码中自动生成,右侧MarsCode AI也可以根据我们的要求帮助讲解算法和生成代码。

image.png

image.png

总结

通过刷题学习算法是最直接最有效的方式,通过利用MarsCode AI可以帮助我们迅速总结问题的考察的知识点和涵盖的算法。利用AI模型可以很便捷的复现算法,帮助我们理解一些抽象的算法过程。可以看出AI刷题的优势之处,很大程度上提高了自己的学习效率。