首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
文和906
游卡_游戏技术部_图形程序员
获赞
80
粉丝
9
关注
3
看过 TA
32
男
哈尔滨工业大学
2023
Unity3D客户端
IP属地:上海
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑文和906吗?
发布(109)
刷题
文和906
2021-10-22 13:55
游卡_游戏技术部_图形程序员
题解 | #替换空格#
遍历字符串,遇到空格就替换。核心是string.insert()函数的使用。时间复杂度O(n),空间复杂度O(1)。 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ string replaceSpace(string s) { // write code here for(int i = 0;i &l...
0
点赞
评论
收藏
转发
文和906
2021-10-22 13:41
游卡_游戏技术部_图形程序员
题解 | #第一个只出现一次的字符#
使用一个二维数组来记录遍历过的字符的出现次数以及出现顺序。将大写小写字母分开存储,这么做是为了便于处理。在遍历一次字符串,得到了记录有信息的而为数组后,遍历两个二维数组,分别得出最先出现的小写字母以及最先出现的大写字母。找到这两个字母在字符串中首次出现的位置,返回这两个位置中的小值。这么做时间复杂度为O(n),空间复杂度为O(n)。 class Solution { public: int FirstNotRepeatingChar(string str) { if(str.empty()){ return -1; } ...
0
点赞
评论
收藏
转发
文和906
2021-10-22 10:59
游卡_游戏技术部_图形程序员
题解 | #构建乘积数组#
先写一种暴力解法。使用二重循环遍历数组,将对应结果插入结果集。这种做法时间复杂度为O(n^2),空间复杂度O(1),显然还有改进空间。 class Solution { public: vector<int> multiply(const vector<int>& A) { vector<int> result; for(int i = 0;i < A.size();i++){ int temp = 1; for(int j = 0;j < A.siz...
0
点赞
评论
收藏
转发
文和906
2021-10-21 16:07
游卡_游戏技术部_图形程序员
题解 | #表示数值的字符串#
写三个方法分别判断是否表示整数、小数以及科学计数法。其中,判断小数的方法中调用判断整数的方法协助判断,判断科学计数法的方法中调用判断小数以及判断整数的方法协助判断。达到代码复用的目的。总体来说没有技术难点,就是string.substr()这个方法有个小坑。两个参数,第一个为截取的起点下标,第二个为要截取的元素个数。最开始将其与js中的substr混淆,使用了第一个为起点下标,第二个为终点下标的写法。 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * ...
0
点赞
评论
收藏
转发
文和906
2021-10-21 14:09
已编辑
游卡_游戏技术部_图形程序员
题解 | #把字符串转换成整数#
遍历字符串,在第一个字符处判断是否为正负号,之后依此判断是否有非数字字符,将字符作为数字加入int数组中。最后得到一个数组,其中装有我们所需要的数字,遍历该数组,将该数组中的数字转为一个整数即可。实际上这里用另一种做法,每次都加上新的数字然后乘10,也可以,这种做法不需要辅助数组。 class Solution { public: int StrToInt(string str) { if(str.empty()){ return 0; } vector<int> arr; bool i...
0
点赞
评论
收藏
转发
文和906
2021-10-21 11:45
游卡_游戏技术部_图形程序员
题解 | #扑克牌顺子#
用一个长度为14的数组来储存给出的5张牌中每张牌出现的次数。遍历数组,将出现的数字在计数数组中对应的位置加1,若其加1后大于2,切其本身不为0,则返回false。因两张不为joker的牌重复则不可能为顺子。遍历时记录出现的最大值与最小值。遍历完后用最大值减去最小值,若大于4则返回false,因为五张牌不可能组成相差大于5的顺子。否则返回true。这种解法只用到一重循环,时间复杂度为O(n)。关于空间复杂度,虽然用到了辅助数组,但该数组的大小固定为14(14张扑克牌),所以我个人认为这里空间复杂度为O(1)。 class Solution { public: bool IsContinu...
0
点赞
评论
收藏
转发
文和906
2021-10-21 11:45
已编辑
游卡_游戏技术部_图形程序员
题解 | #顺时针打印矩阵#
模拟顺时针遍历矩阵的过层,先求出矩阵有多少层(圈),然后按层遍历。每次都从该圈左上角的点按照向右,向下,向左,最后向上的顺序遍历,然后按相同顺序遍历内圈。这种做法由于默认了给出的矩阵最少有两行两列,所以在遇到单行或单列时容易出现问题,为解决这一问题,在遍历完右和下时,判断结果数组内的元素个数是否已与给定矩阵的元素个数相等,若等则直接返回。在这种按圈遍历的做法中,根据矩阵的不同,在遍历完后容易在中间遗漏一些元素未遍历。起初在研究什么样的矩阵会在遍历完后中间仍有元素未遍历这个问题上花了很多时间,而且并未总结出可靠规律,最后索性不研究这一问题,直接用结果数组中的元素数量是否小于矩阵元素的数量来判断,...
0
点赞
评论
收藏
转发
文和906
2021-10-20 15:46
游卡_游戏技术部_图形程序员
题解 | #求1+2+3+...+n#
一开始完全没有头绪,查看了别的同学的做法后醍醐灌顶。首先加减法是可以用的,而其他一切循环手段和乘除法都不能用。既然循环语句不能用,那么就只能递归了。问题是在于递归如何设置结束条件,if语句不能使用。这段代码的巧妙之处就在于利用了&&逻辑与的短路执行特性,只要遇到一个假,后面则不再执行,直接返回假。 class Solution { public: int Sum_Solution(int n) { int result = n; result && (result += Sum_Solution(n - 1)); ...
0
点赞
评论
收藏
转发
文和906
2021-10-20 15:00
游卡_游戏技术部_图形程序员
题解 | #数组中只出现一次的两个数字#
开始时没看到空间复杂度的要求,选择使用键值对来存储数组信息。第一次遍历数组,将数组中的数字及其出现次数记录到map中。第二次遍历map,找到其中仅出现过1次的数,加入到结果数组中返回。这种做法提交后运行时间打败前100%还让我有点小激动。 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector * @return int整型vector */ vector<int>...
0
点赞
评论
收藏
转发
文和906
2021-10-20 14:17
游卡_游戏技术部_图形程序员
题解 | #数值的整数次方#
模拟幂的运算过程,对于正数次幂、0次幂、非负次幂分别处理。 class Solution { public: double Power(double base, int exponent) { double result = 1; if(!exponent){ return 1.0; } for(int i = 0;i < abs(exponent);i++){ if(exponent >= 0){ result *= base; ...
0
点赞
评论
收藏
转发
文和906
2021-10-20 14:05
游卡_游戏技术部_图形程序员
题解 | #二进制中1的个数#
对于非负数,其补码就是其源码,若其为偶数则最右边一位为0,若其为基数则最右边一位为1,每次判断其奇偶性,并更改1的个数,然后将数字右移一位,直到数字为0。对于负数,其补码为原码取反再加一,不好直接通过奇偶性统计1的个数,要先模拟该数变为补码的操作,所以先将其取绝对值,再转换为无符号类型unsigned,在对unsigned进行变为补码的操作,即取反再加一即可。 class Solution { public: int NumberOf1(int n) { else if(n >= 0){ int count = 0; ...
0
点赞
评论
收藏
转发
文和906
2021-10-20 13:36
游卡_游戏技术部_图形程序员
题解 | #不用加减乘除做加法#
通过异或运算可以得到两数的无进位加法结果,通过与后左移一位可以得到进位,结合这两个运算就可以得到加法结果。 class Solution { public: int Add(int num1, int num2) { int result = num1 ^ num2; int carry = (num1 & num2) << 1; while(carry){ int temp1 = carry; int temp2 = result; resul...
0
点赞
评论
收藏
转发
文和906
2021-10-20 11:59
游卡_游戏技术部_图形程序员
题解 | #数据流中的中位数#
由于题目中没有对空间复杂度和时间复杂度做要求,所以上来先考虑较为直接的解法。建立一个数组用于保存数据流,每次插入数据都将数据存入数组中,在调用获取中位数的方法时,先调用sort对数组进行排序,再获得中位数。 class Solution { public: void Insert(int num) { array.push_back(num); } double GetMedian() { sort(array.begin(),array.end()); if(array.size()%2){ ...
0
点赞
评论
收藏
转发
文和906
2021-10-19 16:56
游卡_游戏技术部_图形程序员
题解 | #数组中的逆序对#
开始想到的是用一个二重循环来遍历数组。 class Solution { public: int InversePairs(vector<int> data) { if(!data.size()){ return 0; } int count = 0; for(int i = 0;i < data.size() - 1;i++){ for(int j = i + 1;j < data.size();j++){ if(da...
0
点赞
评论
收藏
转发
文和906
2021-12-28 14:38
已编辑
游卡_游戏技术部_图形程序员
题解 | #数组中重复的数字#
题目中要求时间复杂度O(n),可知不能使用排序来做。同时要求空间复杂度为O(n),则可以使用经典的空间换时间方法做。创建一个与输入数组numbers相同长度的数组count,用于记录numbers中每个数出现了几次。遍历数组,每遍历一个数就将count中下标为该数的元素++,并判断++后该元素的值。若该值大于1,则说明该数重复,直接返回该数。若遍历完整个数组都未返回,说明无重复数,返回-1。时间复杂度与空间复杂度都满足要求。 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * ...
0
点赞
评论
收藏
转发
1
2
3
4
5
6
8
工具箱
TA的圈子
暂未加入圈子
TA的圈子
TA的笔记
暂无笔记
TA的笔记
登录
0
天
已登录
0
天
连续登录
0
人
今日访客
牛客网
牛客企业服务