面试官竟然是前女友,全程被拷打。。。

最近在网上看到一篇文章,一网友说自己在面试的时候遇到了自己的前女友,面试中全程被拷问被挑剔。关键是面试结束的时候前女友说面试结果后续会通知你,有问题会给你发邮件打电话,但你的手机号被我拉黑了。

23bd849b8987e4f0bb2b0ab25f3888cf.png

手机号被拉黑问题不大,即便打电话也是拨打简历上的号码,只要简历上写了就行。我们来看下其他网友的评论,那是相当精彩。其中一位网友说想替女主狠狠拷打楼主。

399091f753e5f73a3c8da9f83743c8e8.png

还有的说剧情都已经想好了,入职》后悔》复合。

56f611849b7f7cb51b1bdb59cd1d0ed4.png

下面这个更狠,要求二面,然后继续拷打。

48187b1715fd8833c4338bae0fecd0f6.png

还有的说拿下offer再顺便把她也拿下。

8a1b148595024b5344bbbec384954706.png

还有的网友要求把这个故事写本书。

5683d74575a46e8208924f837e19ba88.png

还有网友在催更,想看他们的后续,一直到他们结婚,全部一起写出来。

3c1ad1f45dd4d518aba6e273830b55fc.png

--------------下面是今天的算法题--------------

下面就是今天的算法题了,因为今天是周日,不适合看太难的,我们就看一道非常简单的算法题,这题是LeetCode的第66题:加一。

问题描述

来源:LeetCode第66题

难度:简单

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。

示例1:

输入:digits = [1,2,3]

输出:[1,2,4]

解释:输入数组表示数字 123。

示例2:

输入:digits = [4,3,2,1]

输出:[4,3,2,2]

解释:输入数组表示数字 4321。

  • 1 <= digits.length <= 100

  • 0 <= digits[i] <= 9

问题分析

这题说的是对一个数字加一,并且这个数字使用的是数组表示。因为一个数字只要不是 9 ,加一之后都不需要进位,所以我们可以从右往左(从个位加起)遍历数组,如果当前数字只要不是 9 ,直接把它加一然后返回即可。

如果遇到 9 ,就把它变成 0 ,往前进一位,也就是对前面的数字加一,前面的数字也要区分是不是 9 的情况。

JAVA:

public int[] plusOne(int[] digits) {
    int length = digits.length;
    // 对数组从后往前遍历
    for (int i = length - 1; i >= 0; i--) {
        if (digits[i] != 9) {
            // 如果当前数字不是9,直接加1返回即可。
            digits[i]++;
            return digits;
        } else {
            // 如果当前数字是9,让它变成0,继续对它前面的数字加一。
            digits[i] = 0;
        }
    }
    // 除非数组中的元素都是9,否则不会走到这一步,
    // 如果数组的元素都是9,需要把数组的长度加1,
    // 然后把数组的第一个元素变为1,其他都是0。
    int tmp[] = new int[length + 1];
    tmp[0] = 1;
    return tmp;
}

C++:

public:
    vector<int> plusOne(vector<int>& digits) {
        int length = digits.size();
        // 对数组从后往前遍历
        for (int i = length - 1; i >= 0; i--) {
            if (digits[i] != 9) {
                // 如果当前数字不是9,直接加1返回即可。
                digits[i]++;
                return digits;
            } else {
                // 如果当前数字是9,让它变成0,继续对它前面的数字加一。
                digits[i] = 0;
            }
        }
        // 除非数组中的元素都是9,否则不会走到这一步,
        // 如果数组的元素都是9,需要把数组的长度加1,
        // 然后把数组的第一个元素变为1,其他都是0。
        vector<int> tmp(length + 1);
        tmp[0] = 1;
        return tmp;
    }

C:

int* plusOne(int* digits, int digitsSize, int* returnSize) {
    // 对数组从后往前遍历
    for (int i = digitsSize - 1; i >= 0; i--) {
        if (digits[i] != 9) {
            // 如果当前数字不是9,直接加1返回即可。
            digits[i]++;
            *returnSize=digitsSize;
            return digits;
        } else {
            // 如果当前数字是9,让它变成0,继续对它前面的数字加一。
            digits[i] = 0;
        }
    }
    // 除非数组中的元素都是9,否则不会走到这一步,
    // 如果数组的元素都是9,需要把数组的长度加1,
    // 然后把数组的第一个元素变为1,其他都是0。
    int *tmp = (int*)malloc((digitsSize+1)*sizeof(int));
    memset(tmp, 0, (digitsSize+1)*sizeof(int));
    tmp[0] = 1;
    *returnSize=digitsSize+1;
    return tmp;
}

Python:

def plusOne(self, digits: List[int]) -> List[int]:
    length = len(digits)
    # 对数组从后往前遍历
    for i in range(length - 1, -1, -1):
        if digits[i] != 9:
            # 如果当前数字不是9,直接加1返回即可。
            digits[i] += 1
            return digits
        else:
            # 如果当前数字是9,让它变成0,继续对它前面的数字加一。
            digits[i] = 0;
    """
     除非数组中的元素都是9,否则不会走到这一步,
     如果数组的元素都是9,需要把数组的长度加1,
     然后把数组的第一个元素变为1,其他都是0。
    """
    tmp = [0] * (length + 1)
    tmp[0] = 1;
    return tmp;

4e3cb5bf1fbc139f3d7f75437fc46d7c.gif

笔者简介

博哥,真名:王一博,毕业十多年,《算法秘籍》作者,专注于数据结构和算法的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解700多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以下载我整理的1000多页的PDF算法文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据结构和算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值