网易首页 > 网易号 > 正文 申请入驻

女友问我为什么进字节后不理她了,是不是一进字节就没爱情了?

0
分享至

刚才我问豆包一个问题,中国加班最厉害的互联网公司有哪些?结果他列出了拼多多,得物,字节,华为,阿里。。。我印象中也确实是这几家加班比较多,甚至有的人入职之后,连和女朋友联系的时间都没有了,还问进入字节,是不是就只有工作没有爱情了?

最近就有一网友,自从入职字节之后,每天早10晚11的,目前状态很差,女友还问他为什么在进入字节之后就不理她了。就这加班程度,估计回去倒头就睡,字节能不能跳都无所谓,只要心脏还能跳就行。

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

来看下今天的算法题,这题是LeetCode的第315题:计算右侧小于当前元素的个数,难度是困难。

给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。

示例1:


输入:nums = [5,2,6,1] 输出:[2,1,1,0] 解释: 5 的右侧有 2 个更小的元素 (2 和 1) 2 的右侧仅有 1 个更小的元素 (1) 6 的右侧有 1 个更小的元素 (1) 1 的右侧有 0 个更小的元素

示例2:


输入:nums = [-1,-1] 输出:[0,0]

  • 1 <= nums.length <= 10^5

  • -10^4 <= nums[i] <= 10^4

问题分析

这题让计算数组中每一个元素右边有多少比它小的元素,看似很简单的一道题,实则不容易,因为数组的长度有可能比较大,如果一个个计算,肯定会超时。

这题我们可以参考归并排序的思路,归并排序的思想是每次把数组分成两部分,一直分下去,直到不能分为止,然后在合并,合并的时候实际上是合并两个有序数组。

既然合并的两个数组是有序的,那么这题就好办了,我们选择从大往小合并,也就是先合并大的 ,在合并小的,如果前面的元素大于后面的元素,那么前面的元素一定大于后面元素之前的所有元素,有点绕,没关系,我们举个例子,比如我们要合并下面两个有序数组。

[2,4,5,8,9]和[1,3,6,10]

当前面的 8 和后面的 6 比较的时候,因为前面的 8 比后面的 6 大,所以 8 一定大于 6 以及它之前的所有元素,它的个数是 3 ,我们只需要累加即可。

这里在计算之前需要把数组转化一下,因为数组合并的时候位置会发生变化,我们需要先记录下每个元素的值和它对应的下标,代码如下。

JAVA:

public List   countSmaller(int[] nums) {     int n = nums.length;     int[] res = newint[n];// 计算的结果     int[][] arr = newint[n][2];// 记录原数组的值和下标     for (int i = 0; i < n; i++)         arr[i] = newint[]{nums[i], i};     mergeSort(arr, 0, n - 1, res);// 归并排序     // 把数组转成list集合     List ans =  new ArrayList<>(n);     for (int num : res)         ans.add(num);     return ans; } public void mergeSort(int[][] arr, int left, int right, int[] res) {     if (left < right) {         int mid = (left + right) >>> 1;         mergeSort(arr, left, mid, res);// 递归左边部分。         mergeSort(arr, mid + 1, right, res);// 递归右边部分。         merge(arr, left, mid, right, res);//  合并     } } // 合并两个有序的数组,从后往前开始合并。 // 前面数组范围[left,center],后面数组的范围[center+1,right]。 private void merge(int[][] arr, int left, int center, int right, int[] res) {     int len = right - left + 1;// 两个子数组的总长度。     int[][] tmp = newint[len][2];     int index = len - 1;     int end1 = center;// 前面数组末尾的位置。     int end2 = right;// 后面数组末尾的位置。     // 使用双指针合并两个有序数组,从后往前合并。     while (end1 >= left && end2 > center) {         if (arr[end1][0] <= arr[end2][0]) {             tmp[index--] = arr[end2--];         } else {// 累加右侧小于当前元素的个数             res[arr[end1][1]] += end2 - center;             tmp[index--] = arr[end1--];         }     }     // 如果第一个数组前面还有数字就把他添加到临时数组中。     while (end1 >= left)         tmp[index--] = arr[end1--];     // 同理,如果第二个数组后面还有数字就把他添加到临时数组中。     while (end2 > center)         tmp[index--] = arr[end2--];     // 把临时数组中的元素放回原数组。     index = 0;     while (index < len)         arr[left + index] = tmp[index++]; }

C++:

public:     vector
               
  countSmaller(vector
                  
 &nums) {         int n = nums.size();         vector
                    
  res(n, 0); // 计算的结果         vector int ,  int >>  arr (n) ; // 记录原数组的值和下标         for (int i = 0; i < n; i++)             arr[i] = {nums[i], i};         mergeSort(arr, 0, n - 1, res); // 归并排序         return res;     }     void mergeSort(vector int ,  int >> &arr,  int  left,  int  right,  vector < int > &res)  {         if (left < right) {             int mid = left + (right - left) / 2;             mergeSort(arr, left, mid, res); // 递归左边部分             mergeSort(arr, mid + 1, right, res); // 递归右边部分             merge(arr, left, mid, right, res); // 合并         }     }     // 合并两个有序的数组,从后往前开始合并     // 前面数组范围[left,center],后面数组的范围[center+1,right]     void merge(vector int ,  int >> &arr,  int  left,  int  center,  int  right,  vector < int > &res)  {         int len = right - left + 1; // 两个子数组的总长度         vector int ,  int >>  tmp (len) ;         int index = len - 1;         int end1 = center; // 前面数组末尾的位置         int end2 = right; // 后面数组末尾的位置         // 使用双指针合并两个有序数组,从后往前合并         while (end1 >= left && end2 > center) {             if (arr[end1].first <= arr[end2].first) {                 tmp[index--] = arr[end2--];             } else { // 累加右侧小于当前元素的个数                 res[arr[end1].second] += end2 - center;                 tmp[index--] = arr[end1--];             }         }         // 如果第一个数组前面还有数字就把他添加到临时数组中         while (end1 >= left)             tmp[index--] = arr[end1--];         // 同理,如果第二个数组后面还有数字就把他添加到临时数组中         while (end2 > center)             tmp[index--] = arr[end2--];         // 把临时数组中的元素放回原数组         for (int i = 0; i < len; i++) {             arr[left + i] = tmp[i];         }     }
          
         
       

笔者简介

博哥,真名:王一博,毕业十多年, 作者,专注于 数据结构和算法 的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解900多题,对算法题有自己独特的解题思路和解题技巧。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
顶不住了!巴拿马又喊话中国求饶,中国反手在尼加拉瓜开挖新运河

顶不住了!巴拿马又喊话中国求饶,中国反手在尼加拉瓜开挖新运河

小莜读史
2026-06-25 10:21:38
被“发腮”的张一山惊艳,33岁终于长开,网友:杨紫得避嫌了

被“发腮”的张一山惊艳,33岁终于长开,网友:杨紫得避嫌了

东方不败然多多
2026-06-23 03:24:23
为啥有些人不敢爬泰山?网友:当地人去了根本不敢乱说话

为啥有些人不敢爬泰山?网友:当地人去了根本不敢乱说话

阿康四岁啦
2026-06-18 12:17:55
国内50后还剩多少人?真实数据曝光,活到80岁的比例太意外!

国内50后还剩多少人?真实数据曝光,活到80岁的比例太意外!

华庭讲美食
2026-06-10 17:04:25
把瑜伽裤穿成日常的松弛感美女

把瑜伽裤穿成日常的松弛感美女

只要高兴就好
2026-04-13 14:30:30
非法占有公共财物,数额巨大,云南省政协原秘书长车志敏被公诉

非法占有公共财物,数额巨大,云南省政协原秘书长车志敏被公诉

上观新闻
2026-06-24 16:53:33
美记:女友晒出里夫斯续约湖人反应,躺在高尔夫球场庆祝

美记:女友晒出里夫斯续约湖人反应,躺在高尔夫球场庆祝

东方不败然多多
2026-06-25 08:53:38
不休战!曝39岁梅西将出战第3轮:2场5球 有望连续2届夺世界杯金球

不休战!曝39岁梅西将出战第3轮:2场5球 有望连续2届夺世界杯金球

风过乡
2026-06-25 05:58:56
土耳其女老板在印度投了17年,4亿多美元,1万员工,一觉醒来全没

土耳其女老板在印度投了17年,4亿多美元,1万员工,一觉醒来全没

李子橱
2026-06-21 17:15:11
主动投案,长治市沁源县委原书记李丁夫接受审查调查

主动投案,长治市沁源县委原书记李丁夫接受审查调查

界面新闻
2026-06-24 20:05:17
美军证实,新一批没雷达的F35再次交付,机头里面都是配重

美军证实,新一批没雷达的F35再次交付,机头里面都是配重

巅峰高地
2026-06-24 17:36:58
美国断供C919发动机1年后,世界才发现,中国造出了一台更好的

美国断供C919发动机1年后,世界才发现,中国造出了一台更好的

商业财经风向
2026-06-18 10:39:45
6月汽油大跌0.84元/升后,新周期再降0.52元/升,下次7月3日调价

6月汽油大跌0.84元/升后,新周期再降0.52元/升,下次7月3日调价

猪友巴巴
2026-06-24 20:20:03
中国亮出导弹应对美多国军演,苏起预言最终结局

中国亮出导弹应对美多国军演,苏起预言最终结局

开着车去流浪
2026-06-24 16:44:19
曝尼克斯将31+55号签送给火箭 换取39+53号签等资产

曝尼克斯将31+55号签送给火箭 换取39+53号签等资产

北青网-北京青年报
2026-06-25 10:48:20
全红婵留长发,近170cm颜值惊人,网友:这脸,变化好大

全红婵留长发,近170cm颜值惊人,网友:这脸,变化好大

犀利辣椒
2026-06-25 07:02:38
天津高考“一分一段”炸了:680分以上197人,600分以上已破万人

天津高考“一分一段”炸了:680分以上197人,600分以上已破万人

皮蛋儿电影
2026-06-24 09:59:07
中医鬼才倪海厦:“假如你有钱,就去买好看的衣服穿,买好的车子开,吃要尽量的简单,好吃的东西吃一点点就可以了,口腹之欲要控制”

中医鬼才倪海厦:“假如你有钱,就去买好看的衣服穿,买好的车子开,吃要尽量的简单,好吃的东西吃一点点就可以了,口腹之欲要控制”

背包旅行
2026-06-24 12:37:13
全红婵老家新房正式停工,真相出人意料,父亲无奈带妻子离开

全红婵老家新房正式停工,真相出人意料,父亲无奈带妻子离开

匹夫来搞笑
2026-06-25 09:10:00
全网都在夸C罗影帝附体骗过全世界

全网都在夸C罗影帝附体骗过全世界

涵有话说
2026-06-25 10:46:08
2026-06-25 11:51:00
数据结构和算法
数据结构和算法
专门介绍和写算法题解的号
273文章数 4关注度
往期回顾 全部

科技要闻

盘后大涨16%!AI存储需求带飞美光业绩

头条要闻

上海阿姨为儿子买了房却被赶出门 还被儿媳打三个耳光

头条要闻

上海阿姨为儿子买了房却被赶出门 还被儿媳打三个耳光

体育要闻

世界杯最动人一吻:我若离世 你就改嫁吧

娱乐要闻

白玉兰颁奖预测,杨幂胜算大吗?

财经要闻

财报炸裂!美光让空头闭嘴

汽车要闻

少个轮子也能跑?方程豹豹8闪充版云辇P Ultra让新手越野不心慌

态度原创

亲子
游戏
时尚
旅游
军事航空

亲子要闻

幼崽的理解能力有多强,不理解,但照做# 人类幼崽迷惑行为

出师未捷身先死!《GTA6》未发售即遭一国全面封禁

最高级的夏季配色,来了!

旅游要闻

来泉城公园,欣赏荷塘美景

军事要闻

伊朗代表:霍尔木兹海峡已免费开放

无障碍浏览 进入关怀版