何同学最新视频滥用开源,但丢脸的,并不只他一人

何同学

11 月 15 号,在 B 站坐拥 1200W 粉丝的著名数码博主「老师好我叫何同学」(以下简称"何同学")发布了视频《我用36万行备忘录做了个动画…》

alt

顾名思义,这就是用手机上的「备忘录」软件,输入 36W 行内容,然后通过滑动内容,来呈现出动画的效果。

大白话就是:电子版翻页动画。

这虽然是一个手机商单视频,但仍然取得了不错的播放数据:5000+ 弹幕、570W+ 播放、全站排行榜最高第 4 名。

36W 行的文本内容,显然不是人工可以做到的。

于是何同学视频也解释到,他们专门写了一个软件来实现该效果。

视频中的文案原话:所以我们专门写了一个软件,可以把预览动画里面的色块转换成字符,提高效率,但为了最自然的效果,前面白条,躲避障碍的动画,依然是一行一行画的。最后这个文档有36万。

这个软件,毫无疑问是这个视频里,技术含量最高的内容了。

但很快就被眼利的网友发现,何同学口中这款"专门写的软件"其实是一个在 GitHub 上颇受欢迎的开源项目,而且他还删除了原作者的信息。

甚至何同学连创建一个项目文件夹的步骤都没有,代码都是直接在 "Download" 路径下运行:

alt

该项目名为「ASCII generator」,是一个用于生成 ASCII 码的 Python 项目,支持图像转文本、图像转图像、视频转视频。

得益于这一波"泼天流量",该项目的 star 很快就从 1.8k 飙升到 2.9k。

alt

甚至有网友直接定位到视频展示代码所在的文件:

alt

很快,各种实锤的使得何同学不得不下场回应,在视频的评论区置顶了声明,直言这是文案审稿问题,但网友并不卖账,觉得删除原作者信息的做法显然不是无心之失:

alt

上述评论很快就被删除了,甚至一些用「原截图和实锤证据」做成视频的网友,都被拉黑了 🤣🤣:

alt

其实相比于这些乐子,我觉得更加离谱的是,网友对项目 issue 的污染:

alt

在这事火了之后,基本上该项目的所有 issue 都是谈及此事的,我觉得大家有话想对何同学说的话,大可使用别的方式,采用污染项目 issue 的做法,实在是有点丢脸到国外的意思。

对此,你怎么看?

...

回归主题。

来一道简单算法题。

题目描述

平台:LeetCode

题号:34

给定一个按照升序排列的整数数组 nums,和一个目标值 target

找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 

示例 1:

输入:nums = [5,7,7,8,8,10], target = 8

输出:[3,4]

示例 2:

输入:nums = [5,7,7,8,8,10], target = 6

输出:[-1,-1]

示例 3:

输入:nums = [], target = 0

输出:[-1,-1]

提示:

  • nums 是一个非递减数组

进阶:

  • 你可以设计并实现时间复杂度为   的算法解决此问题吗?

二分

这是一道「二分查找」的裸题。

「二分」有一个比较容易混淆的点是:当需要找目标值第一次出现的下标时,条件应该写成 nums[mid] >= target 还是 nums[mid] <= target

其实有一个很好理解的方法:

「由于二分是从中间开始找起的,所以找的必然是条件区间中靠近中心的的边界值。」

文字不好理解,我们结合图片来看:

alt

Java 代码:

class Solution {
    public int[] searchRange(int[] nums, int t) {
        int[] ans = new int[]{-1, -1};
        int n = nums.length;
        if (n == 0return ans;
        int l = 0, r = n - 1;
        while (l < r) {
            int mid = l + r >> 1;
            if (nums[mid] >= t) r = mid;
            else l = mid + 1;   
        }
        if (nums[r] != t) return ans;
        ans[0] = r;
        l = 0; r = n - 1;
        while (l < r) {
            int mid = l + r + 1 >> 1;
            if (nums[mid] <= t) l = mid;
            else r = mid - 1;
        }
        ans[1] = r;
        return ans;
    }
}

C++ 代码:

class Solution {
public:
    vector<intsearchRange(vector<int>& nums, int t) {
        vector<int> ans = {-1-1};
        int n = nums.size();
        if (n == 0return ans;
        int l = 0, r = n - 1;
        while (l < r) {
            int mid = l + r >> 1;
            if (nums[mid] >= t) r = mid;
            else l = mid + 1;   
        }
        if (nums[r] != t) return ans;
        ans[0] = r;
        l = 0; r = n - 1;
        while (l < r) {
            int mid = l + r + 1 >> 1;
            if (nums[mid] <= t) l = mid;
            else r = mid - 1;
        }
        ans[1] = r;
        return ans;
    }
};

Python 代码:

class Solution:
    def searchRange(self, nums: List[int], t: int) -> List[int]:
        ans = [-1-1]
        n = len(nums)
        if n == 0return ans
        l, r = 0, n - 1
        while l < r:
            mid = l + r >> 1
            if nums[mid] >= t: r = mid
            else: l = mid + 1   
        if nums[r] != t: return ans
        ans[0] = r
        l, r = 0, n - 1
        while l < r:
            mid = l + r + 1 >> 1
            if nums[mid] <= t: l = mid
            else: r = mid - 1
        ans[1] = r
        return ans

TypeScript 代码:

function searchRange(nums: number[], t: number): number[] {
    const ans= [-1-1];
    const n = nums.length;
    if (n == 0return ans;
    let l = 0, r = n - 1;
    while (l < r) {
        const mid = l + r >> 1;
        if (nums[mid] >= t) r = mid;
        else l = mid + 1;   
    }
    if (nums[r] !== t) return ans;
    ans[0] = r;
    l = 0; r = n - 1;
    while (l < r) {
        const mid = l + r + 1 >> 1;
        if (nums[mid] <= t) l = mid;
        else r = mid - 1;
    }
    ans[1] = r;
    return ans;
};
  • 时间复杂度:
  • 空间复杂度:

最后

巨划算的 LeetCode 会员优惠通道目前仍可用 ~

使用福利优惠通道 leetcode.cn/premium/?promoChannel=acoier,年度会员 有效期额外增加两个月,季度会员 有效期额外增加两周,更有超大额专属 🧧 和实物 🎁 福利每月发放。

我是宫水三叶,每天都会分享算法知识,并和大家聊聊近期的所见所闻

欢迎关注,明天见。

更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值