首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
牛客362459853号
获赞
37
粉丝
1
关注
3
看过 TA
16
重庆邮电大学
2015
数据分析师
IP属地:浙江
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑牛客362459853号吗?
发布(29)
评论
刷题
收藏
牛客362459853号
关注TA,不错过内容更新
关注
2021-11-23 16:33
重庆邮电大学 数据分析师
题解 | #旋转数组#
描述 一个数组A中存有 n 个整数,在不允许使用另外数组的前提下,将每个整数循环向右移 M( M >=0)个位置, 即将A中的数据由(A0 A1 ……AN-1 )变换为(AN-M …… AN-1 A0 A1 ……AN-M-1 ) (最后 M 个数循环移至最前面的 M 个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 数据范围:0<n≤10,0≤m≤1000 进阶:空间复杂度&nbs...
0
点赞
评论
收藏
分享
2021-11-23 14:56
已编辑
重庆邮电大学 数据分析师
题解 | #数独#
假设给定的数独只有唯一的解法 给出一个独特的解法,从数独做法本身出发,每个空也就是行、列、格可填数字集合的交集。 首先定义3个长度为9的vector<vector<char>>型的数组,H,L,G(H表示行,L表示列,G表示格)。 初始化H,L,G,然后循环遍历一遍数独,当board[i][j]不为空时,更新H[i],L[j],G[j/3+i/3*3]。 那么我们就可以从交集出发,循环遍历数据,如果board[i][j]是空的,就求其交集,然后如果交集 长度是1,说明只有一个数字同时满足行、列、格的要求。此时...
0
点赞
评论
收藏
分享
2021-11-21 15:37
已编辑
重庆邮电大学 数据分析师
题解 | #缺失的第一个正整数#
问题:给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数。 要求: 空间复杂度 O(1),时间复杂度 O(n) 进阶:空间复杂度O(1),时间复杂度 O(logn) 数据范围:-231<=nums[i]<=231-1,0<=len(nums)<=5*105 问题分析:因为整个数组是无序且无重复的,那么第一步需要做的就是排序。排好序后,因为要找的是 缺失的第一个正整数,所以需要把所有<=0的数筛除出去。这一步可以采用二分法,过程可以分为两步: ...
0
点赞
评论
收藏
分享
2021-11-21 02:18
重庆邮电大学 数据分析师
题解 | #回文数字#
描述 在不使用额外的内存空间的条件下判断一个整数是否是回文。 回文指逆序和正序完全相同。 数据范围:−231≤n≤231−1 进阶: 空间复杂度 O(1),时间复杂度 O(len(n)) 问题分析:根据回文数字的特性,末尾跟首位的数字一定相同。那么如果我们能够获得 末尾和首位,然后把末尾和首位去掉,这样每次都是只比末尾和首位。 如何获得末尾很简单只需要x%10,那么首位应该如何获取,我们知道一个数的首位等于 x/(10m),m根据数字大小而定,所以我们就可以设计一个函数...
0
点赞
评论
收藏
分享
2021-11-21 00:18
重庆邮电大学 数据分析师
题解 | #重排链表#
描述 将给定的单链表 L: L0→L1→…→Ln−1→Ln 重新排序为:L0→Ln→L1→Ln−1→L2→Ln−2→… 要求使用原地算法,不能只改变节点内部的值,需要对实际的节点进行交换。 数据范围:链表长度0≤n≤20000 ,链表中每个节点的值满足0≤val≤1000 要求:空间复杂度 O(n) 并在链表上进行操作而不新建链表,时间复杂度 O(n) 进阶:空间复杂度 O(1) , 时间复杂度 O(n) 问题分析:需要重排链表,最简单粗暴的就是定义一个指针...
0
点赞
评论
收藏
分享
2021-11-20 00:12
已编辑
重庆邮电大学 数据分析师
题解 | #大数乘法#
问题描述: 以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回。 数据范围: 读入的数字大小满足0≤n≤101000 要求:空间复杂度 O(n),时间复杂度 O(n2) 问题分析:两个数相乘可以拆成较小的一个数的每位与较大的数乘积,然后每个乘积的和就是 两数相乘的结果。所以我们需要解决的问题就拆分成了1、1位数与一个大数相乘;2、两个大 数相加的问题。 两个大数相加,字符串形式比较简单,主要就是注意进位问题。 然后就是一个个位数与...
0
点赞
评论
收藏
分享
2021-11-19 20:07
已编辑
重庆邮电大学 数据分析师
题解 | #链表的奇偶重排#
问题描述 给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。 注意是节点的编号而非节点的数值。 数据范围:节点数量满足 0≤n≤105,节点中的值都满足 0≤val≤1000 要求:空间复杂度 O(n),时间复杂度O(n) 如果按照题目要求的空间复杂度为O(n),那么很简单,只需要重新建一个尾插的单链表放偶数 位的节点。假设原链表只存奇数位的节点,然后遍历结束后,原链表尾部最后接上新建链表 的头部就可以了。 ...
0
点赞
评论
收藏
分享
2021-11-19 15:36
已编辑
重庆邮电大学 数据分析师
题解 | #删除有序链表中重复的元素-II#
问题描述: 给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。 例如:给出的链表为1 \to 2\to 3\to 3\to 4\to 4\to51→2→3→3→4→4→5, 返回1\to 2\to51→2→5. 给出的链表为1\to1 \to 1\to 2 \to 31→1→1→2→3, 返回2\to 32→3. 数据范围:链表长度 0 \le n \le 100000≤n≤10000,链表中的值满足 |val| \le...
0
点赞
评论
收藏
分享
2021-11-21 22:33
已编辑
重庆邮电大学 数据分析师
题解 | #链表中的节点每k个一组翻转#
问题描述:将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表,如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。 数据范围: 0≤n≤2000 , 1≤k≤2000 ,链表中每个元素都满足 0≤val≤1000 要求空间复杂度 O(1),时间复杂度 O(n)。例:给定单链表:1→2→3→4→5 对于 k=2 , 你应该返回2→1→4→3→5; 对于k =3 , 你应该返回3→2→1...
0
点赞
评论
收藏
分享
2021-11-17 22:56
已编辑
重庆邮电大学 数据分析师
题解 | #数组中的最长连续子序列#
描述 给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数) 数据范围: 1 \le n \le 10^51≤n≤105,数组中的值满足 1\le val \le 10^81≤val≤108 要求:空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn) 需要寻找最长连续序列的长度,就需要先排序,然后再对排好序的数组进行操作。 因为数组是可以有重复值的,...
0
点赞
评论
收藏
分享
2021-11-18 22:01
已编辑
重庆邮电大学 数据分析师
题解 | #判断一个链表是否为回文结构#
描述 给定一个链表,请判断该链表是否为回文结构。 回文是指该字符串正序逆序完全一致。 数据范围: 链表节点数 0 \le n \le 10^70≤n≤107,链表中每个节点的值满足 |val| \le 10^7∣val∣≤107. 普通字符串回文因为可以直接获得长度,直接利用双指针,一个从头往尾,一个从尾往前,很好解决。 因为是单向链表,不能从后往前遍历,所以我们得想办法让其中一个指针从后往前。 很容易想到反转链表,但是反转链表是整个反转,显然不能解决问题。 ...
0
点赞
评论
收藏
分享
2021-11-16 17:45
重庆邮电大学 数据分析师
题解 | #两个链表生成相加链表#
我们知道两个数相加是从低位往高位逐位相加再看进位。 所以可以先把两个链表反转,这样就不用管链表到底多长。 定义两个指针分别指向反转后的链表头。假设链表1,是用于存放相加后的结果。 p指向head1,q指向head2; 再定义一个变量 k——表示当前是否有进位。 如果两个链表一样长,结束是需要判断是否有进位。 如果两个链表不一样长,进行到某一个链表结束时,判断到底是p先结束还是q先结束,q指针指向的下一个是未结束的那个。 然后继续遍历p,只有当p->next==NULL或进位标示为0就结束。 最后如果是遍历完链表结束的循环,就需要判断当前是否...
0
点赞
评论
收藏
分享
2021-11-14 19:28
重庆邮电大学 数据分析师
题解 | #给数组加一#
只需要从后向前判断当前是否是9,是9就赋值0,继续向前直到不是9停止。 然后判断n是否小于0,小于0说明已经遍历完,在数组前面插入1. 否则当前值+1. class Solution { public: vector<int> plusOne(vector<int>& nums) { int n=nums.size()-1; ...
0
点赞
评论
收藏
分享
2021-11-14 19:10
已编辑
重庆邮电大学 数据分析师
题解 | #填充数组#
假设n=max-min表示可填数字个数,zero表示连续0的个数, A[i][j]为出现或多次出现0时可填总数,,i为max-min-1,j为zero-1,则:A[I][j]=A[i-1][j]+A[i][j-1]; 测试了下A[15][15]就已经超过1000000007了。 进一步推理可以发现A[I][j]=A[j][i]. 这应该是解题关键。 代码1:可以解决连续几十个几百个0的问题,用空间换时间。 class Solution { public: /** &nb...
0
点赞
评论
收藏
分享
1
2
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客企业服务