首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
文和906
游卡_游戏技术部_图形程序员
获赞
80
粉丝
9
关注
3
看过 TA
32
男
哈尔滨工业大学
2023
Unity3D客户端
IP属地:上海
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑文和906吗?
发布(109)
刷题
文和906
2021-09-30 11:56
已编辑
游卡_游戏技术部_图形程序员
题解 | #复杂链表的复制#
在不限制时间复杂度的情况下,这题难度并不高。 首先遍历一次链表来深拷贝出一个新链表,这次深拷贝不考虑random的值,仅将链表的label和next深拷贝出来。这样就得到了链表的基本骨架。再用一个二重循环遍历链表,每次处理一个结点,通过一个循环来从骨架链表中找到一个label域和原链表中ramdom域的label域相等的结点,将该结点赋给被处理结点的random域。 这样做使用了一个二重循环,时间复杂度为O(n^2),空间复杂度为O(1)。 /* struct RandomListNode { int label; struct RandomListNode *next, *r...
0
点赞
评论
收藏
转发
文和906
2021-09-30 10:38
游卡_游戏技术部_图形程序员
题解 | #链表中倒数最后k个结点#
先遍历得出链表长度len,然后将链表头指针后移n-k个结点即可。时间复杂度为O(n),空间复杂度为O(1)。 /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead ListNode类 ...
0
点赞
评论
收藏
转发
文和906
2021-09-30 10:18
已编辑
游卡_游戏技术部_图形程序员
题解 | #两个链表的第一个公共结点#
从题目中可以看到,公共结点都是插入在不同结点之后的。所以先遍历两个链表得到链表长度,将长链表的后指针后移,直至两链表长度相等,然后比较两链表头指针,相等则返回,不等则同时后移一位,最终可得结果。 这样做最多只有一重循环,时间复杂度为O(n)。 只使用了两个临时变量保存用于遍历的指针,两个临时变量用于保存链表长度,空间复杂度为O(1)。 之所以不用集合来存放结点的方式做,是因为集合会使空间复杂度变为O(n),不符合题意。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), nex...
0
点赞
评论
收藏
转发
文和906
2021-09-29 18:04
游卡_游戏技术部_图形程序员
题解 | #合并两个排序的链表#
链表的归并排序。对第一个结点需要特殊处理。每次比较链表两个指针的值,将值小的放入结果链表,并将其指针后移。这样做是直接照搬数组的归并排序。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { ListNode* re...
0
点赞
评论
收藏
转发
文和906
2021-09-29 17:27
游卡_游戏技术部_图形程序员
题解 | #从尾到头打印链表#
递归遍历链表,倒序输出。 /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> result; ...
0
点赞
评论
收藏
转发
文和906
2021-09-29 16:42
游卡_游戏技术部_图形程序员
题解 | #链表中环的入口结点#
比较固定的解法。先判定给定链表是否有环,若有则进而找环入口。使用快慢指针来判断链表是否有环。两指针都从头结点开始,快指针一次走两步,慢指针一次走一步,若两指针相遇,则有环,若其中一个指针为null,则无环。当链表中有环时,将两指针的其中一个指向头结点,另一指针继续指向相遇结点,然后两指针每次走一步,最终必定在环入口结点处相遇。这个结论是通过数学证明得到的,感兴趣的朋友可以自己尝试。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NUL...
0
点赞
评论
收藏
转发
文和906
2021-09-29 16:21
游卡_游戏技术部_图形程序员
Linux使用scp指定端口远程传输文件夹
这里需要注意的是scp在指定端口时使用的是-P(大写),很容易和ssh使用的-p(小写)混淆。今天试了半天一直提示连接不成功,还以为是端口和ip写错了。 scp -P 32771 -r sysadmin@10.0.38.215:/models /Users/pro/Desktop
0
点赞
评论
收藏
转发
文和906
2021-09-29 14:44
游卡_游戏技术部_图形程序员
python中将当前代码文件所在目录添加至搜索目录
最近在项目中遇到一个问题,python代码中需要从同目录的文件夹下引包,正常来说直接import就行了。但是可能由于容器路径映射等原因,导致代码文件所在的文件夹,即工作路径,并不在程序的搜索路径中,所以通过import引包会报错。排查了rancher,minlo的配置,并未发现问题。遂放弃通过调整配置来解决问题,转而去通过在代码中配置环境变量来解决这一问题。os.getcwd()的作用是返回当前工作路径,sys.path.append()的作用是将参数路径添加进环境变量中。通过这种方法可以解决路径错误的问题。 import os import sys o_path = os.getcwd() ...
0
点赞
评论
收藏
转发
文和906
2021-09-29 14:08
游卡_游戏技术部_图形程序员
题解 | #大数加法#
使用大数加法的常规解法,模拟笔算加法的过程。从字符串末尾开始相加,将相加的结果入栈。计算完后将栈中元素逐次出栈,并添加到结果字符串末端即可。 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ string solve(string s, string t)...
0
点赞
评论
收藏
转发
文和906
2021-09-29 12:44
游卡_游戏技术部_图形程序员
题解 | #买卖股票的最好时机#
比较简单的动态规划。用一个变量保存最小值,另一个变量保存最大收益。遍历数组:1.当该数比最小值小时,将其赋给最小值。2.将该数与最小值相减得到该数所能得到的最大收益,若该收益比最大收益大,将其赋给最大收益最终即得最大收益。 class Solution { public: /** * * @param prices int整型vector * @return int整型 */ int maxProfit(vector<int>& prices) { // write code here ...
0
点赞
评论
收藏
转发
文和906
2021-09-29 12:28
游卡_游戏技术部_图形程序员
题解 | #两个链表生成相加链表#
最开始的想法十分简单,读取两个链表,将链表保存的数据转为用int存储,然后相加,再存入结果链表中。代码如下。题目中给出的两个测试用例轻松通过。在我自信满满的点下提交后,第一个用例就没通过。事实证明我还是想的太简单了。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: /*...
0
点赞
评论
收藏
转发
文和906
2021-09-28 15:21
游卡_游戏技术部_图形程序员
题解 | #二叉树根节点到叶子节点和为指定值的路径#
比较简单的bfs遍历,最开始写完之后卡在第13个用例没通过,看了半天代码没发现原因。最后去看了别人的代码,发现每次递归结束之后忘了pop_back(),这就很尴尬。因为在递归中是用同一个数组来记录路径的,所以在一次递归结束后必须要把该路径上的结点去除,才能用于记录另一路径。 /** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @par...
0
点赞
评论
收藏
转发
文和906
2021-09-28 13:28
游卡_游戏技术部_图形程序员
题解 | #表达式求值#
经典的中缀表达式求值。常用思路,将其转为后缀表达式,边转边求值。后缀表达式的特点,遇到运算符则将前两个数拿出来运算,便于计算机计算。这里简单描述一下算法过程:遍历字符串,当读到的是数字时,直接将其压入数字栈。当读到的是运算符时,若符号栈为空,则直接将其压入符号栈;若符号栈非空,则判断符号栈栈顶的运算符优先级,若其优先级大于等于读到的优先级,则将其出栈,并从数字栈弹出两个元素进行该运算,先弹出的为右操作数,后弹出的为左操作数,将结果压入数字栈。重复该操作,直到符号栈栈顶运算符的优先级小于读取的运算符,或符号栈空,则将读取的运算符压入符号栈。重复以上操作直到字符串读完。最后,若符号栈非空,则弹出栈...
0
点赞
评论
收藏
转发
文和906
2021-09-27 15:34
游卡_游戏技术部_图形程序员
题解 | #最长回文子串#
比较经典的回文判断题型。由于题目要求时间复杂度为O(n^2),故考虑较为直接的暴力解法。使用一个二重循环,第一重循环i从数组的第一个元素开始,第二重循环j从数组的最后一个元素开始,每趟循环都判断从i到j是否构成回文,若构成,则直接退出内层循环,在外层更新最大值。当i到j的字符串长度小于最大值时,直接退出内层循环,不更新最大值。这样做的好处是,当一个很长的字符串本身就是一个回文时,时间复杂度无限接近O(n)。而最坏的情况,一个很长的字符串中不存在回文时,时间复杂度则介于O(n^2)与O(n^3)之间。平均时间复杂度介于O(nlogn)与O(n^2)之间,满足题目要求。而不借助辅助数组,故空间复杂...
0
点赞
评论
收藏
转发
文和906
2021-09-27 11:44
已编辑
游卡_游戏技术部_图形程序员
题解 | #反转字符串#
实际项目直接调用reverse()即可,这里就不偷懒模拟一下。从后向前遍历str即可。 class Solution { public: /** * 反转字符串 * @param str string字符串 * @return string字符串 */ string solve(string str) { // write code here int len = str.length(); string result; for(int i = len - 1;i >=...
0
点赞
评论
收藏
转发
1
3
4
5
6
7
8
工具箱
TA的圈子
暂未加入圈子
TA的圈子
TA的笔记
暂无笔记
TA的笔记
登录
0
天
已登录
0
天
连续登录
0
人
今日访客
牛客网
牛客企业服务